Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 217 → Rev 216

/trunk/scripts/modules/versionnage/Versionnage.php
48,9 → 48,6
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;
138,8 → 135,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.$this->manuel['suffixe_partiel'].DIRECTORY_SEPARATOR;
$this->zip_chemin_fichier_partiel = Config::get('chemin_referentiel_zip').$this->version_courante.$this->manuel['suffixe_partiel'].'.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';
}
private function creerDossiersZip() {
219,7 → 216,7
$donnees = array();
$donnees['champs'] = $this->champs_nom;
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_bdnt'].$this->manuel['ext_fichier'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_bdnt'];
$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);
316,7 → 313,6
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);
325,31 → 321,11
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['suffixe_bdnt'].$this->manuel['suffixe_partiel'].$this->manuel['ext_fichier'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_bdnt'];
$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);
356,11 → 332,6
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);
375,26 → 346,6
}
}
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) {
419,13 → 370,13
private function creerFichierDiff() {
$donnees = array();
$this->derniere_meta = $this->metaDao->getDerniere($this->projet);
if (is_null($this->derniere_meta === false)) {
$derniere_meta = $this->metaDao->getDerniere($this->projet);
if (is_null($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($this->derniere_meta)) {
} else if (is_null($derniere_meta)) {
$this->ajouterMessage("Premier versionnage pour ce projet, aucun fichier différentiel ne sera créé.");
} else {
$code_projet_precedent = strtolower($this->derniere_meta['code']).'_v'.str_replace('.', '_', $this->derniere_meta['version']);
$code_projet_precedent = strtolower($derniere_meta['code']).'_v'.str_replace('.', '_', $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éé.";
459,7 → 410,9
}
}
$infos = array();
if (!isset($this->noms_precedents[$id])) {
if (isset($this->noms_supprimes[$id])) {
$infos = $this->traiterDiffSuppression($nom);
} else if (!isset($this->noms_precedents[$id])) {
$infos = $this->traiterDiffAjout($nom);
} else {
$nom_precedent = $this->noms_precedents[$id];
488,7 → 441,7
}
private function verifierNomsSupprimes($edition = '«Complète»') {
$this->noms_supprimes = array_diff_key($this->noms_precedents, $this->noms);
$this->noms_supprimes = array_diff_key($this->noms, $this->noms_precedents);
$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);
559,7 → 512,7
}
private function ecrireFichierDiff(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_diff'].$this->manuel['ext_fichier'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_diff'];
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
569,14 → 522,12
private function creerFichierDiffPartiel(&$donnees) {
$this->noms_stat_partiel['modification'] = 0;
if (! is_null($this->derniere_meta) && $this->derniere_meta !== false) {
$donnees['diff_partiel'] = $this->realiserDiffPartiel();
if (! is_null($derniere_meta) && $derniere_meta !== false) {
$donnees['diff_partiel'] = $this->realiserDiff();
$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éé.");
}
}
589,7 → 540,9
foreach ($this->noms as $id => $nom) {
unset($this->noms[$id]);
$infos = array();
if (!isset($this->noms_precedents[$id])) {
if (isset($this->noms_supprimes[$id])) {
$infos = $this->traiterDiffSuppression($nom);
} else if (!isset($this->noms_precedents[$id])) {
$infos = $this->traiterDiffAjout($nom);
} else {
$nom_precedent = $this->noms_precedents[$id];
610,7 → 563,7
}
private function ecrireFichierDiffPartiel(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_diff'].$this->manuel['suffixe_partiel'].$this->manuel['ext_fichier'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_diff'];
$fichier_chemin = $this->zip_chemin_dossier_partiel.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
633,7 → 586,7
}
private function ecrireFichierMeta(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_meta'].$this->manuel['ext_fichier'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_meta'];
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
651,7 → 604,7
}
private function ecrireFichierMetaPartiel(&$contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['suffixe_meta'].$this->manuel['suffixe_partiel'].$this->manuel['ext_fichier'];
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_meta'];
$fichier_chemin = $this->zip_chemin_dossier_partiel.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {