15,11 → 15,11 |
* @version $Id$ |
*/ |
// +-------------------------------------------------------------------------------------------------------------------+ |
// TODO : utilisation de array_key_exists à la place de isset dans creerFichierBdnt() ???? |
// TODO : lors de la génération de la version 2 de la BDTFX tester les diff! Il se peut que la mémoire soit dépassée. |
class Versionnage extends ScriptCommande { |
|
const SCRIPT_NOM = 'versionnage'; |
const MANUEL_VERSION = "4.1"; |
const MANUEL_VERSION = '4.2'; |
|
private $projet = null; |
private $traitement = null; |
196,6 → 196,12 |
|
$donnees = array(); |
$donnees['champs'] = $this->champs_nom; |
|
$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); |
|
foreach ($this->noms as $id => &$nom) { |
$infos = array(); |
foreach ($this->champs_ordre as $champ => $ordre) { |
208,11 → 214,12 |
} |
$infos = $this->remplacerTabulation($infos); |
$infos = $this->remplacerSautsDeLigne($infos); |
$donnees['noms'][$id] = $infos; |
$this->noms[$id] = $infos; |
|
$bdnt_tsv_ligne = $this->getVue('versionnage/squelettes/bdnt_ligne', array('nom_infos' => $infos), '.tpl.tsv'); |
$this->ajouterAuFichier($fichier_chemin, $bdnt_tsv_ligne); |
} |
Debug::printr("Dernier element du tableau des noms [trié] : ".print_r($infos,true)); |
$bdnt_tsv =& $this->getVue('versionnage/squelettes/bdnt', &$donnees, '.tpl.tsv'); |
$this->ecrireFichierBdnt($bdnt_tsv); |
$this->ecrireComplementFichierBdnt($fichier_chemin); |
return $donnees; |
} |
|
272,11 → 279,8 |
return $doc; |
} |
|
private function ecrireFichierBdnt(&$contenu) { |
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_bdnt']; |
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom; |
|
if ($this->ecrireFichier($fichier_chemin, $contenu)) { |
private function ecrireComplementFichierBdnt($fichier_chemin) { |
if (file_exists($fichier_chemin)) { |
$this->ajouterMessage("Écriture du fichier bdnt réussie."); |
$this->signature_md5 = md5_file($fichier_chemin); |
$this->ajouterMessage("Signature MD5 du fichier bdnt :".$this->signature_md5); |
293,8 → 297,7 |
Debug::printr(current($donnees['noms'])); |
$donnees['champs_partiel'] = $this->champs_nom_partiel; |
$donnees['dernier_champ'] = end($this->champs_nom_partiel); |
$bdnt_partielle_tsv =& $this->getVue('versionnage/squelettes/bdnt_partiel', &$donnees, '.tpl.tsv'); |
$this->ecrireFichierBdntPartielle($bdnt_partielle_tsv); |
$this->ecrireFichierBdntPartielle($donnees); |
} |
|
private function definirChampsPartiel() { |
302,11 → 305,21 |
Debug::printr("Champs partiels : ".print_r($this->champs_nom_partiel,true)); |
} |
|
private function ecrireFichierBdntPartielle(&$contenu) { |
private function ecrireFichierBdntPartielle(&$donnees) { |
$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); |
|
if ($this->ecrireFichier($fichier_chemin, $contenu)) { |
foreach ($this->noms as $id => &$nom) { |
$donnees['nom_infos'] = $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); |
} |
} |
|
if (file_exists($fichier_chemin)) { |
$this->ajouterMessage("Écriture du fichier de la bdnt partielle réussie."); |
$this->signature_md5_partiel = md5_file($fichier_chemin); |
$this->ajouterMessage("Signature MD5 du fichier bdnt partiel :".$this->signature_md5_partiel); |
325,6 → 338,17 |
return $retour; |
} |
|
private function ajouterAuFichier($fichier_chemin, &$contenu) { |
$retour = true; |
if (file_put_contents($fichier_chemin, $contenu, FILE_APPEND) == false) { |
$e = "Une erreur est survenu lors de l'ajout de données dans le fichier : $fichier_chemin"; |
$this->ajouterMessage($e); |
$retour = false; |
} |
$contenu = null; |
return $retour; |
} |
|
private function creerFichierDiff() { |
$donnees = array(); |
$derniere_meta = $this->metaDao->getDerniere($this->projet); |