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)) {