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