Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 54 → Rev 55

/trunk/scripts/modules/versionnage/squelettes/meta.tpl.tsv
18,8 → 18,6
 
contributeur <?=$contributeur?>
 
contributeur <?=$contributeur?>
 
date_production <?=$date_prod?>
 
source <?=$source?>
/trunk/scripts/modules/versionnage/Versionnage.php
19,12 → 19,19
class Versionnage extends ScriptCommande {
const SCRIPT_NOM = 'versionnage';
const MANUEL_VERSION = "2.1";
private $projet = null;
private $traitement = null;
private $meta = null;
private $version_courante = null;
private $messages = null;
private $manuel = null;
private $manuel_nom = null;
private $manuel_chemin = null;
private $zip_chemin_dossier = null;
private $zip_chemin_fichier = null;
private $noms = null;
private $noms_precedents = null;
private $noms_stat = null;
61,10 → 68,7
$cmd = $this->getParam('a');
switch ($cmd) {
case 'tout' :
$this->metaDao = new MetaDao();
$this->resultatDao = new ResultatDao();
$this->referentielDao = new ReferentielDao();
$this->manuel = parse_ini_file(Config::get('chemin_appli').DS.'..'.DS.'configurations'.DS.'referentiel_v2.1.ini');
$this->initialiserScript();
Debug::printr('Départ lancement versionnage:');
$this->lancerVersionnage();
break;
75,13 → 79,29
Debug::printr('Termine:'.$this->traitementDao->terminerTraitement($this->traitement['id_traitement']));
}
}
 
private function initialiserScript() {
$this->metaDao = new MetaDao();
$this->resultatDao = new ResultatDao();
$this->referentielDao = new ReferentielDao();
$this->manuel_nom = 'mtpr_v'.str_replace('.', '_', self::MANUEL_VERSION).'.pdf';
$this->manuel_chemin = Config::get('chemin_appli').DS.'..'.DS.'configurations'.DS;
$manuel_config_nom = 'referentiel_v'.self::MANUEL_VERSION.'.ini';
$this->manuel = parse_ini_file($this->manuel_chemin.$manuel_config_nom);
}
public function lancerVersionnage() {
$this->chargerTraitementParametre();
$this->initialiserNomVersionCOurante();
$this->initialiserCheminsZip();
$this->creerDossierZip();
$this->archiver();
$this->chargerNomsATraiter();
$this->analyserNomsATraiter();
$this->creerFichiers();
$this->nettoyerFichiers();
$this->traiterMessages();
}
100,10 → 120,25
}
}
private function initialiserNomVersionCOurante() {
$this->version_courante = strtolower($this->projet).'_v'.str_replace('.', '_', $this->meta['version']);
Debug::printr("Nom archive courante :".$this->version_courante);
}
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';
}
private function creerDossierZip() {
$recursivite = true;
if (mkdir($this->zip_chemin_dossier, 0777, $recursivite) === false) {
$this->ajouterMessage("La création du dossier '$this->zip_chemin_dossier' devant contenir les fichiers a échouée.");
}
}
private function chargerNomsATraiter() {
$archive_courante = strtolower($this->projet).'_v'.str_replace('.', '_', $this->meta['version']);
Debug::printr("Nom archive courante :".$archive_courante);
$this->noms = $this->referentielDao->getTout($archive_courante);
$this->noms = $this->referentielDao->getTout($this->version_courante);
}
private function analyserNomsATraiter() {
131,6 → 166,9
$this->creerFichierBdnt();
$this->creerFichierDiff();
$this->creerFichierMeta();
$this->nettoyerMemoire();
$this->copierManuel();
$this->creerFichierZip();
}
private function creerFichierBdnt() {
191,8 → 229,8
}
private function ecrireFichierBdnt($contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_ref'];
$fichier_chemin = Config::get('chemin_referentiel_zip').$fichier_nom;
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_bdnt'];
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
$this->ajouterMessage("Écriture du fichier bdnt réussie.");
223,15 → 261,19
} else if (is_null($derniere_meta)) {
$this->ajouterMessage("Premier versionnage pour ce projet, aucun fichier différentiel ne sera créé.");
} else {
Debug::printr("Méta dernier enregistrement : ".print_r($derniere_meta,true));
$code_projet_precedent = strtolower($derniere_meta['code']).'_v'.str_replace('.', '_', $derniere_meta['version']);
Debug::printr("Code projet précédent : $code_projet_precedent");
$this->noms_precedents = $this->referentielDao->getTout($code_projet_precedent);
$donnees = array();
$donnees['diff'] = $this->realiserDiff();
$donnees['champs'] = $this->champs_nom;
$diff_tsv = $this->getVue('versionnage/squelettes/diff', $donnees, '.tpl.tsv');
$this->ecrireFichierDiff($diff_tsv);
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éé.";
$this->ajouterMessage($e);
} else {
$this->noms_precedents = $this->referentielDao->getTout($code_projet_precedent);
$donnees = array();
$donnees['diff'] = $this->realiserDiff();
$donnees['champs'] = $this->champs_nom;
$diff_tsv = $this->getVue('versionnage/squelettes/diff', $donnees, '.tpl.tsv');
$this->ecrireFichierDiff($diff_tsv);
}
}
}
289,7 → 331,7
private function ecrireFichierDiff($contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_diff'];
$fichier_chemin = Config::get('chemin_referentiel_zip').$fichier_nom;
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
$this->ajouterMessage("Écriture du fichier diff réussie.");
307,7 → 349,7
private function ecrireFichierMeta($contenu) {
$fichier_nom = $this->getBaseNomFichier().$this->manuel['ext_fichier_meta'];
$fichier_chemin = Config::get('chemin_referentiel_zip').$fichier_nom;
$fichier_chemin = $this->zip_chemin_dossier.$fichier_nom;
if ($this->ecrireFichier($fichier_chemin, $contenu)) {
$this->ajouterMessage("Écriture du fichier meta réussie.");
338,6 → 380,46
}
}
private function nettoyerMemoire() {
$this->noms = null;
$this->noms_precedents = null;
$this->noms_stat = null;
}
private function copierManuel() {
$fichier_source = $this->manuel_chemin.$this->manuel_nom;
$fichier_destination = $this->zip_chemin_dossier.$this->manuel_nom;
if (copy($fichier_source, $fichier_destination) === false) {
$this->ajouterMessage("La copie du manuel '$fichier_destination' a échouée.");
}
}
private function creerFichierZip() {
$fichierZip = new PclZip($this->zip_chemin_fichier);
if ($fichierZip->add($this->zip_chemin_dossier, PCLZIP_OPT_REMOVE_ALL_PATH) == 0) {
$e = "La création du fichier zip '$this->zip_chemin_fichier' a échoué avec l'erreur : ".$fichierZip>errorInfo(true);
$this->ajouterMessage($e);
}
}
private function nettoyerFichiers() {
$dossier = $this->zip_chemin_dossier;
if (is_dir($dossier)) {
$objets = scandir($dossier);
foreach ($objets as $objet) {
if ($objet != '.' && $objet != '..') {
if (filetype($dossier.'/'.$objet) == 'dir') {
rrmdir($dossier.'/'.$objet);
} else {
unlink($dossier.'/'.$objet);
}
}
}
reset($objets);
rmdir($dossier);
}
}
private function traiterMessages() {
if (isset($this->messages)) {
$num_message = 1;