Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 37 → Rev 38

/trunk/doc/bdd/referentiel.xml
260,8 → 260,8
</SETTINGS>
<METADATA>
<REGIONS>
<REGION ID="28021" RegionName="Exemple BDNT" XPos="743" YPos="25" Width="668" Height="529" RegionColor="1" TablePrefix="0" TableType="0" OverwriteTablePrefix="0" OverwriteTableType="0" Comments="" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="7" />
<REGION ID="27985" RegionName="Traitements" XPos="28" YPos="24" Width="691" Height="530" RegionColor="0" TablePrefix="0" TableType="0" OverwriteTablePrefix="0" OverwriteTableType="0" Comments="Tables permettant de r\195\169aliser des traitments sur les donn\195\169es des r\195\169f\195\169rentiels." IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="3" />
<REGION ID="28021" RegionName="Exemple BDNT" XPos="743" YPos="25" Width="668" Height="529" RegionColor="1" TablePrefix="0" TableType="0" OverwriteTablePrefix="0" OverwriteTableType="0" Comments="" IsLinkedObject="0" IDLinkedModel="-1" Obj_id_Linked="-1" OrderPos="7" />
</REGIONS>
<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" >
/trunk/scripts/modules/tests/Tests.php
15,6 → 15,7
* @version $Id$
*/
// +-------------------------------------------------------------------------------------------------------------------+
// TODO : supprimer l'utilisation du paramêtres 'p' et chercher les infos depuis la bdd
class Tests extends ScriptCommande {
private $projet = null;
30,7 → 31,7
public function executer() {
// Récupération de paramêtres
$this->projet = $this->getParam('p');
$this->manuel = parse_ini_file($this->getModuleChemin().DS.'configurations'.DS.'referentiel_v2.1.ini');
$this->manuel = parse_ini_file(Config::get('chemin_appli').DS.'..'.DS.'configurations'.DS.'referentiel_v2.1.ini');
$this->resultatDao = new ResultatDao();
$this->traitementDao = new TraitementDao();
37,29 → 38,32
// Récupération du dernier traitement demandé
$this->traitement = $this->traitementDao->getDernierTraitement($this->projet);
Debug::printr($this->traitement);
// Écriture de la date de début du traitement
Debug::printr('Debute:'.$this->traitementDao->debuterTraitement($this->traitement['id_traitement']));
// Nettoyage des traitements obsolètes
$traitements_obsoletes = $this->traitementDao->getTraitementsObsoletes($this->projet);
Debug::printr('Supp. obsoletes:'.$this->traitementDao->supprimer($traitements_obsoletes));
// TODO : Nettoyage des tratiements (et de leurs résultats) avortés
// Lancement du test demandé
$cmd = $this->getParam('a');
switch ($cmd) {
case 'tout' :
$this->tableStructureDao = new TableStructureDao();
$this->referentielDao = new ReferentielDao();
$this->lancerTests();
break;
default :
$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
if ($this->traitement != false) {
Debug::printr($this->traitement);
// Écriture de la date de début du traitement
Debug::printr('Debute:'.$this->traitementDao->debuterTraitement($this->traitement['id_traitement']));
// Nettoyage des traitements obsolètes
$traitements_obsoletes = $this->traitementDao->getTraitementsObsoletes($this->projet);
Debug::printr('Supp. obsoletes:'.$this->traitementDao->supprimer($traitements_obsoletes));
// TODO : Nettoyage des traitements (et de leurs résultats) avortés
// Lancement du test demandé
$cmd = $this->getParam('a');
switch ($cmd) {
case 'tout' :
$this->tableStructureDao = new TableStructureDao();
$this->referentielDao = new ReferentielDao();
Debug::printr('Départ lancement test:');
$this->lancerTests();
break;
default :
$this->traiterErreur('Erreur : la commande "%s" n\'existe pas!', array($cmd));
}
// Écriture de la date de fin du traitement
Debug::printr('Termine:'.$this->traitementDao->terminerTraitement($this->traitement['id_traitement']));
}
// Écriture de la date de fin du traitement
Debug::printr('Debute:'.$this->traitementDao->terminerTraitement($this->traitement['id_traitement']));
}
 
public function lancerTests() {
70,6 → 74,7
$colonnes = $this->tableStructureDao->getColonnes($this->projet);
$analyses = $this->tableStructureDao->getAnalyse($this->projet);
$noms = $this->referentielDao->getTout($this->projet);
Debug::printr('Nbre noms :'.count($noms));
$noms = $this->classerNomsParNumNom($noms);
$noms_homonymie = $this->classerNomsParNomComplet($noms);
/trunk/scripts/modules/tests/configurations/referentiel_v2.1.ini
File deleted
\ No newline at end of file
/trunk/.buildpath
1,6 → 1,6
<?xml version="1.0" encoding="UTF-8"?>
<buildpath>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
<buildpathentry kind="src" path=""/>
<buildpathentry kind="con" path="org.eclipse.dltk.USER_LIBRARY/framework"/>
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
<buildpathentry kind="con" path="org.eclipse.dltk.USER_LIBRARY/TBFramework"/>
</buildpath>
/trunk/configurations/referentiel_v2.1.ini
New file
0,0 → 1,86
; Version du référentiel servant de base aux informations ci-dessous
version = 2.1
; Noms des champs
champs = "num_nom,num_nom_retenu,num_tax_sup,rang,nom_complet,nom_supra_generique,genre,epithete_infra_generique,epithete_sp,type_epithete,epithete_infra_sp,cultivar_groupe,cultivar,nom_commercial,auteur,annee,biblio_origine,notes,nom_addendum,homonyme,basionyme,synonyme_proparte,synonyme_douteux,synonyme_mal_applique,synonyme_orthographique,biblio_statut,hybride_parent_01,hybride_parent_01_notes,hybride_parent_02,hybride_parent_02_notes,nom_francais,presence,statut_origine,statut_introduction,statut_culture"
; Noms et types des champs
champs_type = "num_nom=INT,
num_nom_retenu=INT,
num_tax_sup=INT,
rang=INT,
nom_complet=VARCHAR,
nom_supra_generique=VARCHAR,
genre=VARCHAR,
epithete_infra_generique=VARCHAR,
epithete_sp=VARCHAR,
type_epithete=VARCHAR,
epithete_infra_sp=VARCHAR,
cultivar_groupe=VARCHAR,
cultivar=VARCHAR,
nom_commercial=VARCHAR,
auteur=VARCHAR,
annee=INT,
biblio_origine=VARCHAR,
notes=TEXT,
nom_addendum=VARCHAR,
homonyme=INT,
basionyme=INT,
synonyme_proparte=VARCHAR,
synonyme_douteux=BOOL,
synonyme_mal_applique=BOOL,
synonyme_orthographique=INT,
biblio_statut=TEXT,
hybride_parent_01=INT,
hybride_parent_01_notes=TEXT,
hybride_parent_02=INT,
hybride_parent_02_notes=TEXT,
nom_francais=VARCHAR,
presence=VARCHAR,
statut_origine=VARCHAR,
statut_introduction=VARCHAR,
statut_culture=VARCHAR"
; Valeurs numériques des rangs
rangs = "10,20,30,40,50,55,40,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,340,350,360,370,380,390,400,410,420,430"
; Valeur numérique indiquant le rang du genre
rang_genre="220"
; Valeur numérique indiquant le rang de l'espèce
rang_sp="290"
 
; TOUTES LES LISTES séparées par | sontinsérées dans la regexp suivante : /^(?:$liste)$/ VOUS DEVEZ SI NÉCESSAIRE
; ANTISLASHER LES CARACTÈRES : . \ + * ? [ ^ ] $ ( ) { } = ! < > : -
; Liste de types d'épithète à rejeter. Séparation : ,. Insenssible à la casse.
type_epithete_rejetes="cv[.]?|convar[.]?"
; Liste de mots de noms de cultivar qui doivent être rejetés. Séparation : |. Inssensible à la casse.
cultivar_mots_rejetes="cv[.]?|convar[.]?"
; Liste de noms de cultivar acceptés faisant exception à la règle de la majuscule pour la 1ère lettre de chaque mot. Séparation : |. Senssible à la casse.
cultivar_acceptes="s-Hertogenbosch|IJsselham"
; Liste de mots de noms de groupe de cultivar qui doivent être rejetés. Séparation : |. Inssensible à la casse.
cultivar_gp_mots_rejetes="gp|grex|group|gruppe|groupe|grupo|gruppen"
; Liste de mots de noms de groupe de cultivar à accepter. Séparation : |. Senssible à la casse.
cultivar_gp_mots_acceptes="gx"
; Liste de noms de groupe de cultivar à accepter. Séparation : |. Senssible à la casse.
cultivar_gp_acceptes=""
;Liste des mots mineurs (conjonctions et prépositions). Séparation : |. Sensible à la casse.
mots_mineurs = "mais|ou|et|donc|or|ni|car|and|but|or|nor|de|à|pour|en|dans|avec|sur|par|sans|of|to|in|for|with|on"
; Liste des intitulés auteur faisant exception aux règles mais acceptés. Séparation : |
auteur_acceptes=""
; Liste des mots composant un intitulés auteur qui sont rejetés. Séparation : |
auteur_mots_rejetes="et|and|[(]?(?:p\.){2}[)]?"
 
; Liste des codes de présence
codes_presence = "PSDECA"
; Liste des statuts d'origine
codes_statuts_origine = "NSDECAX"
; Liste des statuts d'introduction
codes_statuts_introduction = "ISDECAX"
; Liste des statuts de culture
codes_statuts_culture = "CISDECX"
 
; MÉTADONNÉES
; Liste des domaines géographiques
domaine_geo="France métro & Corse;Océan Indien;Martinique;Guadeloupe;Guyane;Nouvelle-Calédonie;Polynésie française;St Martin & St Barth;St Pierre et Miquelon;Terres Australes"
; Liste des domaines taxonomiques
domaine_taxo="Trachéophytes;Bryophytes;Champignons;Lichens;Algues"
; Liste des codes de nomenclatures
domaine_code="CINB;CINPC"
; Liste des licences proposées pour les référentiels
licences="Attribution 2.0 France <http://creativecommons.org/licenses/by/2.0/fr/>;Attribution-NonCommercial 2.0 France <http://creativecommons.org/licenses/by-nc/2.0/fr/>;Attribution-NonCommercial-NoDerivs 2.0 France <http://creativecommons.org/licenses/by-nc-nd/2.0/fr/>;Attribution-NonCommercial-ShareAlike 2.0 France <http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>;Attribution-NoDerivs 2.0 France <http://creativecommons.org/licenses/by-nd/2.0/fr/>;Attribution-ShareAlike 2.0 France <http://creativecommons.org/licenses/by-sa/2.0/fr/>"
/trunk/bibliotheque/dao/ReferentielDao.php
23,21 → 23,28
*/
public function getReferentielsDispo() {
$url = $this->url_jrest.self::SERVICE."/Dispo";
$json = file_get_contents($url);
$json = $this->envoyerRequeteConsultation($url);
$noms = json_decode($json, true);
return $noms;
}
/**
* Retourne l'ensemble des information sur les colonnes d'une table.
* Retourne l'ensemble des information sur les noms d'un référentiel.
*
* @param string le nom de la table.
* @return array un tableau contenant les informations sur les colonnes de la table.
* @param string le code du référentiel.
* @return array un tableau contenant les informations sur les noms du référentiel.
*/
public function getTout($code_projet) {
$url = $this->url_jrest.self::SERVICE."/Tout/$code_projet";
$json = file_get_contents($url);
$noms = json_decode($json, true);
$nbre = $this->getNombre($code_projet);
$noms = array();
$pas = 1000;
for ($i = 0; $i < $nbre ; $i += $pas) {
$this->setLimitation($i, $pas);
$json = $this->envoyerRequeteConsultation($url);
$noms_partiel = json_decode($json, true);
$noms = array_merge($noms, $noms_partiel);
}
return $noms;
}
49,10 → 56,8
*/
public function getNombre($code_projet) {
$url = $this->url_jrest.self::SERVICE."/Nombre/$code_projet";
$json = file_get_contents($url);
$json = $this->envoyerRequeteConsultation($url);
$nbre = json_decode($json, true);
return $nbre;
}
}
/trunk/bibliotheque/dao/TraitementDao.php
37,6 → 37,20
}
/**
* Retourne l'ensemble des traitements en attente.
*
* @param string le code du projet de référentiel.
* @return mixed un tableau contenant les informations sur les traitements en attente ou false en cas d'échec.
*/
public function getTraitementsEnAttente($code_projet) {
$url = $this->url."/EnAttente/$code_projet";
$json = $this->envoyerRequeteConsultation($url);
$traitements = json_decode($json, true);
return $traitements;
}
/**
* Retourne l'ensemble des traitements en cours.
*
* @param string le code du projet de référentiel.
/trunk/bibliotheque/dao/Dao.php
58,6 → 58,7
// MÉTHODES
protected function envoyerRequeteConsultation($url) {
$url = $this->traiterUrlParametres($url);
$retour = $this->envoyerRequete($url, 'GET');
return $retour;
}
107,6 → 108,24
return $contenu;
}
private function traiterUrlParametres($url) {
$parametres = array();
if (! is_null($this->getLimiteDebut())) {
$parametres[] = 'start='.$this->getLimiteDebut();
}
if (! is_null($this->getLimiteNbre())) {
$parametres[] = 'limit='.$this->getLimiteNbre();
}
if ($this->getDistinction() != 0) {
$parametres[] = 'distinct='.$this->getDistinction();
}
if (count($parametres) > 0) {
$url_parametres = implode('&', $parametres);
$url = $url.'?'.$url_parametres;
}
return $url;
}
private function traiterEntete($entetes, $uri) {
$infos = $this->analyserEntete($entetes, $uri);
$this->traiterEnteteDebug($infos);
/trunk/.settings/org.eclipse.php.core.prefs
1,3 → 1,3
#Fri Jun 25 16:20:19 CEST 2010
#Mon Jul 12 17:08:15 CEST 2010
eclipse.preferences.version=1
include_path=0;/referentiel\u00055;org.eclipse.dltk.USER_LIBRARY/framework
include_path=0;/referentiel\u00055;org.eclipse.dltk.USER_LIBRARY/TBFramework
/trunk/interfaces/configurations/config.default.ini
12,6 → 12,10
info.framework.version = 0.2
;Encodage de l'application
appli_encodage = "UTF-8"
; Paramêtres indiquant que l'on est en français pour permettre l'affichage des dates en français.
i18n_locale_systeme = "php:setlocale(LC_TIME, 'fr_FR.UTF-8')"
; Paramêtres indiquant la zone horaire locale
i18n_zone_horaire_systeme = "php:date_default_timezone_set('Europe/Paris')"
; 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
/trunk/interfaces/configurations/referentiel_v2.1.ini
73,4 → 73,11
; Liste des statuts d'introduction
codes_statuts_introduction = "ISDECAX"
; Liste des statuts de culture
codes_statuts_culture = "CISDECX"
codes_statuts_culture = "CISDECX"
 
; Liste des domaines géographiques
domaine_geo="France métro & Corse;Océan Indien;Martinique;Guadeloupe;Guyane;Nouvelle-Calédonie;Polynésie française;St Martin & St Barth;St Pierre et Miquelon;Terres Australes"
; Liste des domaines taxonomiques
domaine_taxo="Trachéophytes;Bryophytes;Champignons;Lichens;Algues"
; Liste des codes de nomenclatures
domaine_code="CINB;CINPC"
/trunk/interfaces/index.php
15,8 → 15,8
<meta name="description" content="<?php echo Referentiel::getMetaDescription();?>" />
<meta name="keywords" content="<?php echo Referentiel::getMetaTags();?>" />
<meta name="revisit-after" content="15 days" />
<meta name="robots" content="index,follow" />
<meta name="revisit-after" content="150 days" />
<meta name="robots" content="noindex,nofollow" />
<meta name="author" content="Tela Botanica" />
 
<link rel="shortcut icon" type="image/x-icon" href="http://www.tela-botanica.org/favicon.ico" />
/trunk/interfaces/squelettes/form_traitement.tpl.html
19,7 → 19,7
<input name="module" type="hidden" value="<?=$url_module;?>" />
<input name="action" type="hidden" value="<?=$url_action_demande;?>" />
<input name="ref" type="hidden" value="<?=$ref;?>" />
<label id="ref-dem-label"for="ref-dem-ok">Faire une demande de traitement</label>
<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>
<form id="ref-rafraichir" name="ref-rafraichir" action="<?=$url_form;?>" method="get">
38,6 → 38,29
<?php endforeach; ?>
<?php endif; ?>
 
<h2>Traitements en attente <?=strftime('à %H:%M:%S le %d %B %Y')?></h2>
<?php if (isset($traitements_en_attente)) : ?>
<table>
<caption>Traitements en attente</caption>
<thead>
<tr>
<th>Nom (#)</th>
<th>Date de la demande</th>
</tr>
</thead>
<tbody>
<?php foreach ($traitements_en_attente as $traitement) : ?>
<tr>
<td><?=$traitement['nom']?> <span class="discretion">(id:<?=$traitement['id_traitement']?>)</span></td>
<td><?=$traitement['meta_date_creation']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php else : ?>
<p class="information">Aucun traitement en attente.</p>
<?php endif; ?>
 
<h2>Traitements en cours</h2>
<?php if (isset($traitements_en_cours)) : ?>
<table>
/trunk/interfaces/squelettes/css/referentiel/referentiel.css
16,12 → 16,25
background-color:#E9584C !important;}
.espace{
background-color:yellow !important;}
 
.case-a-cocher-scroll {
height:6em;
padding:2px;
overflow:auto;
border:1px solid #ccc}
.liste-simple li, ul.liste-simple{
list-style-type:none;
padding:0;
margin:0 !important;}
.liste-champs li, ul.liste-champs{
list-style-type:none;
padding:0;
margin:0 !important;}
.liste-champs li{
padding:2px;}
/*--------------------------------------------------------------------------------------------------------------*/
/* Demande de traitements */
#zone-form form{
display:inline;}
 
/*--------------------------------------------------------------------------------------------------------------*/
/* Traitement */
#resultats {
41,4 → 54,6
width:800px;
padding:5px;}
#ref-resultat .message p{
background-color:#f0f0f0;}
background-color:#f0f0f0;}
 
/trunk/interfaces/squelettes/form_version.tpl.html
New file
0,0 → 1,141
<!-- REF - DEBUT VERSIONNAGE -->
<script type="text/javascript">
$(document).ready(function() {
$('#ref-dem-ok').click(function(e) {
var ok = false;
if (confirm('Êtes vous sûr de vouloir versionner le référentiel actuellement en cours de travail ?')) {
ok = true;
}
return ok;
});
});
</script>
<h1>Versionnage du référentiel «&nbsp;<?=$ref;?>&nbsp;»</h1>
 
<?php if (isset($messages)) : ?>
<h2>Messages</h2>
<?php foreach ($messages as $message) : ?>
<p class="information"><?=$message;?></p>
<?php endforeach; ?>
<?php endif; ?>
 
<div id="zone-form-version">
<form id="ref-demande-versionnage" name="ref-demande-versionnage" action="<?=$url_form;?>" method="get">
<input name="module" type="hidden" value="<?=$url_module;?>" />
<input name="action" type="hidden" value="<?=$url_action_demande;?>" />
<input name="ref" type="hidden" value="<?=$ref;?>" />
<fieldset>
<legend>Général</legend>
<ul class="liste-champs">
<li>
<label for="titre">Titre</label>
<input id="titre" type="text" value=""/>
</li>
<li>
<label for="acronyme">Acronyme</label>
<input id="acronyme" type="text" value=""/>
</li>
<li>
<label for="version">Version</label>
<input id="version" type="text" value=""/>
</li>
</ul>
</fieldset>
<fieldset>
<legend>Date</legend>
<label for="date_prod">Date de production</label>
<input id="date_prod" name="date_prod" type="text" value="<?=$date_prod?>" readonly="readonly"/>
</fieldset>
 
<fieldset>
<legend>Domaines couverts par le référentiel</legend>
<p> Vous pouvez choisir plusieurs éléments par liste.</p>
<label for="ref-ver-dom-tax">Domaine taxonomique</label>
<div id="ref-ver-dom-tax" class="case-a-cocher-scroll" style="width:150px;"/>
<ul class="liste-simple">
<? foreach ($domaine_taxo as $taxo) : ?>
<li><label><input type="checkbox" name="dom_tax" value="<?=$taxo?>" /><?=$taxo?></label></li>
<? endforeach; ?>
</ul>
</div>
<label for="ref-ver-dom-geo">Domaine géographique</label>
<div id="ref-ver-dom-geo" class="case-a-cocher-scroll" style="width:250px;"/>
<ul class="liste-simple">
<? foreach ($domaine_geo as $geo) : ?>
<li><label><input type="checkbox" name="dom_geo" value="<?=$geo?>" /><?=$geo?></label></li>
<? endforeach; ?>
</ul>
</div>
<label for="ref-ver-dom-code">Codes botaniques utilisés</label>
<div id="ref-ver-dom-code" class="case-a-cocher-scroll" style="width:150px;"/>
<ul class="liste-simple">
<? foreach ($domaine_code as $code) : ?>
<li><label><input type="checkbox" name="dom_code" value="<?=$code?>" /><?=$code?></label></li>
<? endforeach; ?>
</ul>
</div>
</fieldset>
 
<fieldset>
<legend>Contacts</legend>
<ul class="liste-champs">
<li>
<label for="auteur_principal">Auteur principal</label>
<input type="text" id="auteur_principal" name="auteur_principal" value="" />
</li>
<li>
<label for="coordinateur">Coordinateur</label>
<input type="text" id="coordinateur" name="coordinateur" value="" />
</li>
<li>
<label for="contributeur">Auteurs/Contributeurs</label>
<textarea id="contributeur" name="contributeur" rows="5" cols="50"></textarea>
</li>
<li>
<label for="editeur">Éditeur</label>
<input type="text" id="editeur" name="editeur" value="" />
</li>
<li>
<label for="contact">Courriel de contact</label>
<input type="text" name="contact" value="" />
</li>
</ul>
</fieldset>
 
<fieldset>
<legend>Citation</legend>
<ul class="liste-champs">
<li>
<label for="source">Source</label>
<textarea id="source" name="source" rows="5" cols="50"></textarea>
</li>
<li>
<label for="mention_legale">Mention légale</label>
<input type="text" id="mention_legale" name="mention_legale" value="" />
</li>
<li>
<label for="ref-ver-licence">Licence</label>
<div class="case-a-cocher-scroll" style="width:350px;">
<ul id="ref-ver-licence" class="liste-simple">
<? foreach ($licences as $licence) : ?>
<li><label><input type="checkbox" name="licence" value="<?=$licence['url']?>" /><a href="<?=$licence['url']?>" onclick="window.open(this.href); return false;"><?=$licence['nom']?></a></label></li>
<? endforeach; ?>
</ul>
</div>
</li>
<li>
<label for="referencement">Comment citer ce référentiel?</label>
<textarea id="referencement" name="referencement" rows="5" cols="50"></textarea>
</li>
</ul>
</fieldset>
<input id="ref-versionnage-ok" type="submit" value="Versionner" />
</form>
</div>
<!-- REF - FIN VERSIONNAGE -->
/trunk/interfaces/controleurs/Test.php
53,14 → 53,21
// Traitement de l'info sur le code du référentiel
if (isset($this->referentiel)) {
$donnees['ref'] = $this->referentiel;
// Recherche des traitements en attente
$resultat = $this->traitementDao->getTraitementsEnAttente($this->referentiel);
if (is_array($resultat)) {
$donnees['traitements_en_attente'] = $resultat;
}
// Recherche des traitements en cours d'éxecution
$resultat = $this->traitementDao->getTraitementsEnCours($this->referentiel);
if ($resultat != false) {
if (is_array($resultat)) {
$donnees['traitements_en_cours'] = $resultat;
}
// Recherche des traitements déjà effectué
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel);
if ($resultat != false) {
if (is_array($resultat)) {
// Ajout de l'url vers la fiche du traitement
foreach ($resultat as &$traitement) {
$traitement['url'] = $this->obtenirUrlFicheTraitement($this->referentiel, $traitement['id_traitement']);
92,17 → 99,21
if (!isset($this->referentiel)) {
$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
} else {
// TODO : vérifier qu'il n'y a pas déjà un traitement en cours pour ce projet.
$resultat_traitement_en_cours = $this->traitementDao->getTraitementsEnCours($this->referentiel);
if ($resultat_traitement_en_cours) {
$this->addMessage("Un traitement est déjà en cours...");
$resultat_traitement_en_attente = $this->traitementDao->getTraitementsEnAttente($this->referentiel);
if ($resultat_traitement_en_attente) {
$this->addMessage("Un traitement est déjà en attente...");
} else {
$resultat = $this->traitementDao->ajouterTraitement($this->referentiel);
if ($resultat != false) {
$this->addMessage("Le traitement #'$resultat' a été ajouté.");
$this->lancerScript();
$resultat_traitement_en_cours = $this->traitementDao->getTraitementsEnCours($this->referentiel);
if ($resultat_traitement_en_cours) {
$this->addMessage("Un traitement est déjà en cours...");
} else {
$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
$resultat = $this->traitementDao->ajouterTraitement($this->referentiel);
if ($resultat != false) {
$this->addMessage("Le traitement #'$resultat' a été ajouté.");
$this->lancerScript();
} else {
$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
}
}
}
}
118,7 → 129,7
$projet = $this->referentiel;
$action = 'tout';
$log = Config::get('chemin_script_log');
$commande = "$php -f $exe $script -p $projet -a $action > $log &";
$commande = "$php -d memory_limit=1073741824 -f $exe $script -p $projet -a $action > $log &";
 
$message_erreur_tpl = "%s\n.".
"Il est nécessaire de configurer le lancement du script via une tache dans le cron.\n".
/trunk/interfaces/controleurs/Versionnage.php
14,6 → 14,7
*/
class Versionnage extends AppliControleur {
private $manuel = null;
private $referentiel = null;
public function __construct() {
23,6 → 24,8
if (isset($_GET['ref'])) { // code du projet courrant
$this->referentiel = strtolower($_GET['ref']);
}
$this->manuel = parse_ini_file(Config::get('chemin_appli').DS.'..'.DS.'configurations'.DS.'referentiel_v2.1.ini');
}
//+----------------------------------------------------------------------------------------------------------------+
31,9 → 34,41
* Fonction d'affichage par défaut
*/
public function executerActionParDefaut() {
return $this->afficherInterface();
}
 
/**
* Affiche le formulaire de demande de versionnage
*/
public function afficherInterface() {
$donnees = array();
// Paramêtres pour l'url du formulaire
$this->url->unsetVariablesRequete(array('module', 'action', 'ref'));
$donnees['url_form'] = $this->url->getUrl();
$donnees['url_module'] = 'Versionnage';
$donnees['url_action_demande'] = 'demanderTraitement';
$donnees['url_action_rafraichir'] = 'afficherInterface';
// Date de production de la version
$donnees['date_prod'] = date('Y-m-d');
// Récupération des paramètres de configuration du manuel des référentiels
$donnees['domaine_geo'] = explode(';', $this->manuel['domaine_geo']);
$donnees['domaine_taxo'] = explode(';', $this->manuel['domaine_taxo']);
$donnees['domaine_code'] = explode(';', $this->manuel['domaine_code']);
$licences = explode(';', $this->manuel['licences']);
foreach ($licences as $licence) {
if (preg_match('/^([^<]+)<([^>]+)>/', $licence, $match)) {
$info_licence = array();
$info_licence['nom'] = $match[1];
$info_licence['url'] = $match[2];
$donnees['licences'][] = $info_licence;
}
}
$this->setSortie(self::RENDU_CORPS, $this->getVue('form_version', $donnees), false);
$this->construireMenu($this->referentiel);
$this->construireFilAriane($this->referentiel);
$this->setSortie(self::RENDU_CORPS, '<p>En cours de réalisation...</p>', false);
}
}
}
?>
/trunk/services/jrest.ini.php.defaut
1,5 → 1,8
;<?/*
[settings]
;Memoire maxi pour les services : 128Mo = 134217728 ; 256Mo = 268435456 ; 512Mo = 536870912 ; 1Go = 1073741824
memoryLimit = "512M"
erreurNiveau = 30719 ; E_ALL = 30719
servicesDir = "modules/"
baseURL = "/referentiel/services/"
argSeparatorInput = "&"
/trunk/services/modules/Referentiel.php
79,8 → 79,9
if (!is_null($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 ";
'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'num_nom ASC').' '.
"LIMIT $this->start, $this->limit ";
$this->debug[] = $requete;
// Récupération des résultats
try {
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
100,7 → 101,7
* Appelée avec les paramêtres d'url suivant :
* /RefReferentiel/nombre/code_du_referentiel
*/
public function getElementNombre($projet) {
public function getElementNombre($params_url) {
$p = $this->traiterParametresUrl(array('projet'), $params_url, false);
extract($p);
/trunk/services/modules/Ref.php
35,12 → 35,14
if (isset($_GET)) {
$get_params = array('orderby', 'distinct', 'start', 'limit', 'formatRetour');
foreach ($get_params as $get) {
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
$_GET[$get] = str_replace($verifier, '', $_GET[$get]);
if (isset($_GET[$get]) && $_GET[$get] != '') {
$this->$get = $_GET[$get];
} else {
$_GET[$get] = null;
if (isset($_GET[$get])) {
$verifier = array('NULL', "\n", "\r", "\\", "'", '"', "\x00", "\x1a", ';');
$_GET[$get] = strip_tags(str_replace($verifier, '', $_GET[$get]));
if ($_GET[$get] != '') {
$this->$get = $_GET[$get];
} else {
$_GET[$get] = null;
}
}
}
}
/trunk/services/modules/Traitement.php
107,6 → 107,38
}
/**
* Retourne les infos sur les traitements en attente.
*/
public function getElementEnAttente($params_url) {
$p = $this->traiterParametresUrl(array('projet'), $params_url);
extract($p);
$donnees = false;
if (!is_null($projet)) {
$requete = ($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
'FROM ref_traitement '.
"WHERE referentiel_code = $projet ".
' AND date_debut IS NULL '.
' AND date_fin IS NULL '.
'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'meta_date_creation DESC').' ';
// 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());
}
} else {
$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
}
return $donnees;
}
/**
* Retourne les infos sur les traitements en cours.
*/
public function getElementEnCours($params_url) {
/trunk/services/JRest.php
28,6 → 28,13
public function JRest($iniFile = 'jrest.ini.php') {
// Chargement de la configuration
self::$config = parse_ini_file($iniFile, TRUE);
// Gestion de la mémoire maximum allouée aux services
ini_set('memory_limit', self::$config['settings']['memoryLimit']);
// Gestion des erreurs
error_reporting(self::$config['settings']['erreurNiveau']);
// Enregistrement de la méthode gérant l'autoload des classes
spl_autoload_register(array('JRest', 'chargerClasse'));