Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 216 → Rev 217

/trunk/scripts/modules/versionnage/Versionnage.php
48,6 → 48,9
private $diff_modif_types = null;
private $signature_md5 = null;
private $signature_md5_partiel = null;
private $derniere_meta = null;
private $rangs_bdnt_taxref = null;
private $statuts_bdnt_taxref = null;
private $resultatDao = null;
private $traitementDao = null;
135,8 → 138,8
private function initialiserCheminsZip() {
$this->zip_chemin_dossier = Config::get('chemin_referentiel_zip').$this->version_courante.DIRECTORY_SEPARATOR;
$this->zip_chemin_fichier = Config::get('chemin_referentiel_zip').$this->version_courante.'.zip';
$this->zip_chemin_dossier_partiel = Config::get('chemin_referentiel_zip').$this->version_courante.'_partiel'.DIRECTORY_SEPARATOR;
$this->zip_chemin_fichier_partiel = Config::get('chemin_referentiel_zip').$this->version_courante.'_partiel.zip';
$this->zip_chemin_dossier_partiel = Config::get('chemin_referentiel_zip').$this->version_courante.$this->manuel['suffixe_partiel'].DIRECTORY_SEPARATOR;
$this->zip_chemin_fichier_partiel = Config::get('chemin_referentiel_zip').$this->version_courante.$this->manuel['suffixe_partiel'].'.zip';
}
private function creerDossiersZip() {
216,7 → 219,7
$donnees = array();
$donnees['champs'] = $this->champs_nom;
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_bdnt'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_bdnt'].$this->manuel['ext_fichier'];
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
$bdnt_tsv_entete = $this->getVue('versionnage/squelettes/bdnt_entete', array('champs' => $donnees['champs']), '.tpl.tsv');
$this->ecrireFichier($fichier_chemin, $bdnt_tsv_entete);
313,6 → 316,7
private function creerFichierBdntPartiel(&$donnees) {
$this->definirChampsPartiel();
$this->creerCorrespondanceRangBdntTaxref();
Debug::printr(current($donnees['noms']));
$donnees['champs_partiel'] = $this->champs_nom_partiel;
$donnees['dernier_champ'] = end($this->champs_nom_partiel);
321,11 → 325,31
private function definirChampsPartiel() {
$this->champs_nom_partiel = explode(',', $this->manuel['champs_partiel']);
$champs_taxref = explode(',', $this->manuel['champs_taxref']);
$this->champs_nom_partiel = array_merge($this->champs_nom_partiel, $champs_taxref);
Debug::printr("Champs partiels : ".print_r($this->champs_nom_partiel,true));
}
private function creerCorrespondanceRangBdntTaxref() {
$rangs = explode(',', $this->manuel['rangs_bdnt_taxref']);
foreach ($rangs as $rang) {
list($id_bdnt, $code_taxref) = explode(':', trim($rang));
$this->rangs_bdnt_taxref[$id_bdnt] = $code_taxref;
}
}
private function creerCorrespondanceStatutBdntTaxref() {
$statuts = explode(',', $this->manuel['statuts_bdnt_taxref']);
foreach ($statuts as $statut) {
list($code_taxref, $champ_et_code_bdnt) = explode('=', trim($statut));
list($nom_champ_bdnt, $code_bdnt) = explode(':', trim($champ_et_code_bdnt));
$this->statuts_bdnt_taxref[$nom_champ_bdnt][$code_bdnt] = $code_taxref;
}
Debug::printr($this->statuts_bdnt_taxref);
}
private function ecrireFichierBdntPartielle(&$donnees) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_bdnt'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_bdnt'].$this->manuel['suffixe_partiel'].$this->manuel['ext_fichier'];
$fichier_chemin = $this->zip_chemin_dossier_partiel.$fichier_nom;
$bdnt_tsv_entete = $this->getVue('versionnage/squelettes/bdnt_partiel_entete', array('champs_partiel' => $donnees['champs_partiel']), '.tpl.tsv');
$this->ecrireFichier($fichier_chemin, $bdnt_tsv_entete);
332,6 → 356,11
foreach ($this->noms as $id => &$nom) {
$donnees['nom_infos'] = $nom;
// Ajout de champs spécifique à Taxref généré depuis les données BDNT
$donnees['nom_infos']['taxref_rang'] = $this->attribuerRangTaxref($nom['rang']);
$donnees['nom_infos']['taxref_statut'] = $this->attribuerStatutTaxref($nom);
$bdnt_tsv_ligne = $this->getVue('versionnage/squelettes/bdnt_partiel_ligne', $donnees, '.tpl.tsv');
if ($bdnt_tsv_ligne != '') {
$this->ajouterAuFichier($fichier_chemin, $bdnt_tsv_ligne);
346,6 → 375,26
}
}
private function attribuerRangTaxref($rang) {
$rang_taxref = '';
if (isset($this->rangs_bdnt_taxref[$rang])) {
$rang_taxref = $this->rangs_bdnt_taxref[$rang];
}
return $rang_taxref;
}
private function attribuerStatutTaxref($nom) {
$statut_taxref = '';
$champs_statuts = array('presence', 'statut_origine', 'statut_introduction', 'statut_culture');
foreach ($champs_statuts as $champ) {
$valeur = trim($nom[$champ]);
if (isset($this->statuts_bdnt_taxref[$champ][$valeur])) {
$statut_taxref = $this->statuts_bdnt_taxref[$champ][$valeur];
}
}
return $statut_taxref;
}
private function ecrireFichier($fichier_chemin, &$contenu) {
$retour = true;
if (file_put_contents($fichier_chemin, $contenu) == false) {
370,13 → 419,13
private function creerFichierDiff() {
$donnees = array();
$derniere_meta = $this->metaDao->getDerniere($this->projet);
if (is_null($derniere_meta === false)) {
$this->derniere_meta = $this->metaDao->getDerniere($this->projet);
if (is_null($this->derniere_meta === false)) {
$this->ajouterMessage("Un problème est survenu lors de la récupération des métadonnées précédentes.");
} else if (is_null($derniere_meta)) {
} else if (is_null($this->derniere_meta)) {
$this->ajouterMessage("Premier versionnage pour ce projet, aucun fichier différentiel ne sera créé.");
} else {
$code_projet_precedent = strtolower($derniere_meta['code']).'_v'.str_replace('.', '_', $derniere_meta['version']);
$code_projet_precedent = strtolower($this->derniere_meta['code']).'_v'.str_replace('.', '_', $this->derniere_meta['version']);
if ($code_projet_precedent == $this->version_courante) {
$e = "La code de la version préalablement versionnée ($code_projet_precedent) est le même que celui ".
"de la demande actuel ({$this->version_courante}) pour ce projet, aucun fichier différentiel ne sera créé.";
410,9 → 459,7
}
}
$infos = array();
if (isset($this->noms_supprimes[$id])) {
$infos = $this->traiterDiffSuppression($nom);
} else if (!isset($this->noms_precedents[$id])) {
if (!isset($this->noms_precedents[$id])) {
$infos = $this->traiterDiffAjout($nom);
} else {
$nom_precedent = $this->noms_precedents[$id];
441,7 → 488,7
}
private function verifierNomsSupprimes($edition = '«Complète»') {
$this->noms_supprimes = array_diff_key($this->noms, $this->noms_precedents);
$this->noms_supprimes = array_diff_key($this->noms_precedents, $this->noms);
$e = count($this->noms_supprimes)." lignes ont été supprimées vis à vis de la version ".
"précédentes pour l'édition $edition. Cela concerne les noms : ".implode(', ', array_keys($this->noms_supprimes));
Debug::printr($e);
512,7 → 559,7
}
private function ecrireFichierDiff(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_diff'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_diff'].$this->manuel['ext_fichier'];
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
522,12 → 569,14
private function creerFichierDiffPartiel(&$donnees) {
$this->noms_stat_partiel['modification'] = 0;
if (! is_null($derniere_meta) && $derniere_meta !== false) {
$donnees['diff_partiel'] = $this->realiserDiff();
if (! is_null($this->derniere_meta) && $this->derniere_meta !== false) {
$donnees['diff_partiel'] = $this->realiserDiffPartiel();
$donnees['champs_partiel_diff'] = array_merge($this->champs_nom_partiel, $this->champs_diff);
$donnees['dernier_champ'] = end($donnees['champs_partiel_diff']);
$diff_tsv_partiel =& $this->getVue('versionnage/squelettes/diff_partiel', &$donnees, '.tpl.tsv');
$this->ecrireFichierDiffPartiel($diff_tsv_partiel);
} else {
$this->ajouterMessage("Aucun fichier différentiel pour l'édition «Partielle» ne sera créé.");
}
}
540,9 → 589,7
foreach ($this->noms as $id => $nom) {
unset($this->noms[$id]);
$infos = array();
if (isset($this->noms_supprimes[$id])) {
$infos = $this->traiterDiffSuppression($nom);
} else if (!isset($this->noms_precedents[$id])) {
if (!isset($this->noms_precedents[$id])) {
$infos = $this->traiterDiffAjout($nom);
} else {
$nom_precedent = $this->noms_precedents[$id];
563,7 → 610,7
}
private function ecrireFichierDiffPartiel(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_diff'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_diff'].$this->manuel['suffixe_partiel'].$this->manuel['ext_fichier'];
$fichier_chemin = $this->zip_chemin_dossier_partiel.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
586,7 → 633,7
}
private function ecrireFichierMeta(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_meta'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_meta'].$this->manuel['ext_fichier'];
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
604,7 → 651,7
}
private function ecrireFichierMetaPartiel(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_meta'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_meta'].$this->manuel['suffixe_partiel'].$this->manuel['ext_fichier'];
$fichier_chemin = $this->zip_chemin_dossier_partiel.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
/trunk/configurations/referentiel_v4.2.ini
1,11 → 1,15
; Version du référentiel servant de base aux informations ci-dessous
version = 4.2
; Extension fichier ref
ext_fichier_bdnt = "_ref.txt"
suffixe_bdnt = "_ref"
; Extension fichier meta
ext_fichier_meta = "_meta.txt"
suffixe_meta = "_meta"
; Extension fichier diff
ext_fichier_diff = "_diff.txt"
suffixe_diff = "_diff"
; Extension fichier export
ext_fichier = ".txt"
; Suffixe pour les fichiers partiel (Taxref)
suffixe_partiel = "_taxref"
; Noms des champs de la bdnt
champs = "num_nom,num_nom_retenu,num_tax_sup,rang,nom_sci,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,hybride_parent_01,hybride_parent_01_notes,hybride_parent_02,hybride_parent_02_notes,nom_francais,presence,statut_origine,statut_introduction,statut_culture,exclure_taxref"
; Noms des champs de la bdnt partielles
12,6 → 16,8
champs_partiel = "num_nom,num_nom_retenu,num_tax_sup,rang,nom_sci,auteur,annee,biblio_origine,nom_francais,presence,presence_Co,presence_Ga,statut_origine,statut_introduction,statut_culture"
; Noms des champs du diff de la bdnt
champs_diff = "modification_type,modification_type_1,modification_type_2,modification_type_3"
; Noms des champs Taxref
champs_taxref = "taxref_rang,taxref_statut"
; Noms, types et nombre de caractères des champs
champs_type = "num_nom=INT|9,
num_nom_retenu=VARCHAR|9,
87,6 → 93,8
exclure_taxref=3"
; Valeurs numériques des rangs
rangs = "10,20,30,33,36,40,42,45,47,50,53,56,60,70,80,90,100,110,120,130,140,150,160,170,180,190,193,196,200,210,215,220,230,235,240,250,260,270,275,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430"
; Correspondance Rang BDNT/Taxref (Format : code_numerique_rang_bdnt:code_taxref)
rangs_bdnt_taxref = "10:SPRG,20:KD,30:SSRG,33:?,36:?,40:PH,42:SBPH,45:IFPH,47:?,50:DV,53:?,56:?,60:SPCL,70:CLAD,80:CL,90:SBCL,100:IFCL,110:LEG,120:SPOR,130:COH,140:OR,150:SBOR,160:IFOR,170:SPFM,180:FM,190:SBFM,193:?,196:?,200:TR,210:SSTR,215:?,220:GN,230:SSGN,235:?,240:SC,250:SBSC,260:SER,270:SSER,275:?,280:AGES,290:ES,300:SMES,310:MES,320:SSES,330:?,340:VAR,350:SVAR,360:FO,370:SSFO,380:FOES,390:LIN,400:CLO,410:RACE,420:MO,430:AB,440:CVAR"
; Valeur numérique indiquant le rang du genre
rang_genre="220"
; Valeur numérique indiquant le rang de l'espèce
226,6 → 234,8
=Pas d'information,
X=Inapplicable,
-=Autre notion de culture"
; Correspondance entre les codes de statut de Taxref et les champs et code de statut des BDNT (Format : code_taxref=nom_champ_bdnt:code_statut_bdnt)
statuts_bdnt_taxref = "P=presence:P,A=presence:A,D=presence:D,X=presence:E,B=presence:P-B,W=presence:E-W,F=presence:E-F,C=statut_origine:S-C,E=statut_origine:N-E,S=statut_origine:N-S,Z=statut_origine:E-Z,I=statut_introduction:I,J=statut_introduction:I-J,M=statut_introduction:I-M,Y=statut_introduction:E"
 
; MÉTADONNÉES
; Liste des domaines géographiques