Subversion Repositories Applications.referentiel

Rev

Rev 356 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 356 Rev 358
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe Controleur du module Accueil.
4
 * Classe Controleur du module Accueil.
5
 * Affichage les infos sur l'ensemble des référentiels disponibles.
5
 * Affichage les infos sur l'ensemble des référentiels disponibles.
6
 * 
6
 * 
7
 * @package		Referentiel
7
 * @package		Referentiel
8
 * @category	Php5.2
8
 * @category	Php5.2
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @copyright	2010 Tela-Botanica
10
 * @copyright	2010 Tela-Botanica
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version		SVN: $Id$
13
 * @version		SVN: $Id$
14
 */
14
 */
15
class Informations extends AppliControleur {
15
class Informations extends AppliControleur {
16
	
16
	
17
	private $referentiel = null;
17
	private $referentiel = null;
18
	private $referentielDao = null;
18
	private $referentielDao = null;
19
	private $rechercheDao = null;
19
	private $rechercheDao = null;
20
	private $traitementDao = null;
20
	private $traitementDao = null;
21
	private $resultatDao = null;
21
	private $resultatDao = null;
22
	private $metaDao = null;
22
	private $metaDao = null;
23
	private $colonnesOrdonnees = array();
23
	private $colonnesOrdonnees = array();
24
	
24
	
25
	public function __construct()  {
25
	public function __construct()  {
26
		parent::__construct();
26
		parent::__construct();
27
		
27
		
28
		// Récupération de paramêtres
28
		// Récupération de paramêtres
29
		if (isset($_GET['ref'])) { // code du projet courrant
29
		if (isset($_GET['ref'])) { // code du projet courrant
30
			$this->referentiel = strtolower(strip_tags($_GET['ref']));
30
			$this->referentiel = strtolower(strip_tags($_GET['ref']));
31
		}
31
		}
32
		
32
		
33
		// Chargement des DAO nécessaires
33
		// Chargement des DAO nécessaires
34
		$this->resultatDao = new ResultatDao();
34
		$this->resultatDao = new ResultatDao();
35
		$this->traitementDao = new TraitementDao();
35
		$this->traitementDao = new TraitementDao();
36
		$this->referentielDao = new ReferentielDao();
36
		$this->referentielDao = new ReferentielDao();
37
		$this->rechercheDao = new RechercheDao();
37
		$this->rechercheDao = new RechercheDao();
38
		$this->metaDao = new MetaDao();
38
		$this->metaDao = new MetaDao();
39
		// tableau colonnesOrdonnees à modifier aussi dans service/Recherche.php
39
		// tableau colonnesOrdonnees à modifier aussi dans service/Recherche.php
40
		$this->colonnesOrdonnees = array("nn" => array("Numéro nomenclatural","checked","Identifiant numérique du nom scientifique"),
40
		$this->colonnesOrdonnees = array("nn" => array("Numéro nomenclatural","checked","Identifiant numérique du nom scientifique"),
41
			"nr" => array("Numéro nomenclatural du nom retenu","checked","Identifiant numérique du nom scientifique (num_nom) retenu pour désigner le taxon"),
41
			"nr" => array("Numéro nomenclatural du nom retenu","checked","Identifiant numérique du nom scientifique (num_nom) retenu pour désigner le taxon"),
42
			"nt" => array("Numéro taxonomique","checked","Identifiant numérique du taxon auquel est rattaché le nom"),
42
			"nt" => array("Numéro taxonomique","checked","Identifiant numérique du taxon auquel est rattaché le nom"),
43
			"cd" => array("Numéro INPN","checked","Identifiant numérique unique du nom scientifique attribué par l’INPN"),
43
			"cd" => array("Numéro INPN","checked","Identifiant numérique unique du nom scientifique attribué par l’INPN"),
44
			"rg" => array("Code rang","checked","Code numérique indiquant le rang du nom scientifique (voir tableau 7 du manuel technique)"),
44
			"rg" => array("Code rang","checked","Code numérique indiquant le rang du nom scientifique (voir tableau 7 du manuel technique)"),
45
			"fam" => array("Famille (APG III)","checked","Nom de la famille dans APG III"),
45
			"fam" => array("Famille (APG III)","checked","Nom de la famille dans APG III"),
46
			"nsc" => array("Nom avec auteur","checked","Nom scientifique avec auteur(s)"),
46
			"nsc" => array("Nom avec auteur","checked","Nom scientifique avec auteur(s)"),
47
			"bibc" => array("Année et bibliographie","checked","Format à étudier celui de Tela : 1868, Brev. Pl. Nov., 2 : 70 ou celui de Kew :  Brev. Pl. Nov., 2 : 70 (1868)"),
47
			"bibc" => array("Année et bibliographie","checked","Format à étudier celui de Tela : 1868, Brev. Pl. Nov., 2 : 70 ou celui de Kew :  Brev. Pl. Nov., 2 : 70 (1868)"),
48
			"nsrc" => array("Nom retenu avec auteur","checked","Nom retenu pour tous les taxons (identique si le nom est édjà le nom retenu)"),
48
			"nsrc" => array("Nom retenu avec auteur","checked","Nom retenu pour tous les taxons (identique si le nom est édjà le nom retenu)"),
49
			"extax" => array("Présent dans Taxref","checked",""),
49
			"extax" => array("Présent dans Taxref","checked",""),
50
			"lien" => array("Permalien","checked","Lien http vers la fiche nomenclaturale"),
50
			"lien" => array("Permalien","checked","Lien http vers la fiche nomenclaturale"),
51
			"ntsup" => array("Numéro nomenclatural rang supérieur","","Identifiant numérique du nom (num_nom) de rang supérieur dans la classification par défaut de l'index"),
51
			"ntsup" => array("Numéro nomenclatural rang supérieur","","Identifiant numérique du nom (num_nom) de rang supérieur dans la classification par défaut de l'index"),
52
			"pre" => array("Répartition géographique","","Code indiquant si le taxon est présent dans la zone géographique définie par le référentiel (tableau 9)"),
52
			"pre" => array("Répartition géographique","","Code indiquant si le taxon est présent dans la zone géographique définie par le référentiel (tableau 9)"),
53
			"ns" => array("Nom sans auteur","","Nom scientifique sans auteur"),
53
			"ns" => array("Nom sans auteur","","Nom scientifique sans auteur"),
54
			"aut" => array("Auteur","","Intitulé de(s) l'auteur(s) du nom (abréviations standards de Brummitt et Powell)"),
54
			"aut" => array("Auteur","","Intitulé de(s) l'auteur(s) du nom (abréviations standards de Brummitt et Powell)"),
55
			"ann" => array("Année publication","","Année de la publication effective du support papier"),
55
			"ann" => array("Année publication","","Année de la publication effective du support papier"),
56
			"bib" => array("Bibliographie","","Référence bibliographique de la publication d'origine du nom"),
56
			"bib" => array("Bibliographie","","Référence bibliographique de la publication d'origine du nom"),
57
			"ntype" => array("Numéro du type","","Identifiant numérique (num_nom) du 1er basionyme appliqué à la planche d'herbier"),
57
			"ntype" => array("Numéro du type","","Identifiant numérique (num_nom) du 1er basionyme appliqué à la planche d'herbier"),
58
			"nbas" => array("Numéro du basionyme","","Identifiant numérique (num_nom) du basionyme du nom"),
58
			"nbas" => array("Numéro du basionyme","","Identifiant numérique (num_nom) du basionyme du nom"),
59
			"genre" => array("Genre","","Nom d'un genre dans le cas d'un monôme du rang genre ou d'une combinaison"),
59
			"genre" => array("Genre","","Nom d'un genre dans le cas d'un monôme du rang genre ou d'une combinaison"),
60
			"esp" => array("Epithète espèce","","Épithète de l'espèce"),
60
			"esp" => array("Epithète espèce","","Épithète de l'espèce"),
61
			"eing" => array("Epithète infragénérique","","Épithète infra-générique d'une combinaison dont le rang est situé entre le genre et l'espèce"),
61
			"eing" => array("Epithète infragénérique","","Épithète infra-générique d'une combinaison dont le rang est situé entre le genre et l'espèce"),
62
			"te" => array("Type d'épithète infraspécifique","","Abréviation indiquant le type de l'épithète infra-spécifique"),
62
			"te" => array("Type d'épithète infraspécifique","","Abréviation indiquant le type de l'épithète infra-spécifique"),
63
			"einsp" => array("Epithète infraspécifique","","Épithète infra-spécifique d'une combinaison"),
63
			"einsp" => array("Epithète infraspécifique","","Épithète infra-spécifique d'une combinaison"),
64
			"hybp01" => array("Hybride parent 1","","Identifiant du nom (num_nom) du parent numéro 1 (dans le cas d'un hybride)"),
64
			"hybp01" => array("Hybride parent 1","","Identifiant du nom (num_nom) du parent numéro 1 (dans le cas d'un hybride)"),
65
			"nomsupgen" => array("Nom supra générique","","Monôme dont le rang est supérieur au genre"),
65
			"nomsupgen" => array("Nom supra générique","","Monôme dont le rang est supérieur au genre"),
66
			"hybp02" => array("Hybride parent 2","","Identifiant du nom (num_nom) du parent numéro 2 (dans le cas d'un hybride)"),
66
			"hybp02" => array("Hybride parent 2","","Identifiant du nom (num_nom) du parent numéro 2 (dans le cas d'un hybride)"),
67
			"stori" => array("Statut d'origine","","Code indiquant le statut d'origine du taxon dans la zone géographique définie par le référentiel (tableau 10)"),
67
			"stori" => array("Statut d'origine","","Code indiquant le statut d'origine du taxon dans la zone géographique définie par le référentiel (tableau 10)"),
68
			"stint" => array("Statut d'introduction","","Code indiquant le statut d'introduction du taxon dans la zone géographique définie par le référentiel (tableau 11)"),
68
			"stint" => array("Statut d'introduction","","Code indiquant le statut d'introduction du taxon dans la zone géographique définie par le référentiel (tableau 11)"),
69
			"stcult" => array("Statut de culture","","Code indiquant le statut de culture du taxon dans la zone géographique définie par le référentiel (tableau 12)"),
69
			"stcult" => array("Statut de culture","","Code indiquant le statut de culture du taxon dans la zone géographique définie par le référentiel (tableau 12)"),
70
			"notes" => array("Remarques","","Notes complémentaires"),
70
			"notes" => array("Remarques","","Notes complémentaires"),
71
			"nomadd" => array("Commentaires nomenclaturaux","","Commentaires nomenclaturaux pouvant être associés à un nom (voir tableau 8 du manuel technique)"),
71
			"nomadd" => array("Commentaires nomenclaturaux","","Commentaires nomenclaturaux pouvant être associés à un nom (voir tableau 8 du manuel technique)"),
72
			"nsr" => array("Nom retenu sans auteur","","Nom scientifique du nom retenu sans auteur"),
72
			"nsr" => array("Nom retenu sans auteur","","Nom scientifique du nom retenu sans auteur"),
73
			"hom" => array("Homonymie","","Contient la valeur 1 si le nom possède un homonyme ou si le nom est un homonyme. Dans le cas contraire"),
73
			"hom" => array("Homonymie","","Contient la valeur 1 si le nom possède un homonyme ou si le nom est un homonyme. Dans le cas contraire"),
74
			"syn" => array("Statut du nom", "", "retenu, synonyme, ambigü, calculé à partir des num_nom et num_nom_retenu"),
74
			"syn" => array("Statut du nom", "", "retenu, synonyme, ambigü, calculé à partir des num_nom et num_nom_retenu"),
75
			"synprop" => array("Synonyme proprate","","Contient plusieurs identifiants numériques (num_nom) dans le cas d'un nom obtenu suite à la division d'un taxon. Contient un seul identifiant numérique (num_nom) dans le cas d'un nom obtenu suite à la fusion de plusieurs taxons."),
75
			"synprop" => array("Synonyme proprate","","Contient plusieurs identifiants numériques (num_nom) dans le cas d'un nom obtenu suite à la division d'un taxon. Contient un seul identifiant numérique (num_nom) dans le cas d'un nom obtenu suite à la fusion de plusieurs taxons."),
76
			"syndout" => array("Synonyme douteux","","Contient la valeur 1 si le nom est un synonyme douteux. Dans le cas contraire"),
76
			"syndout" => array("Synonyme douteux","","Contient la valeur 1 si le nom est un synonyme douteux. Dans le cas contraire"),
77
			"synmapp" => array("Synonyme mal appliqué","","Contient la valeur 1 si le nom est un synonyme mal appliqué (cas des sensu). Dans le cas contraire"),
77
			"synmapp" => array("Synonyme mal appliqué","","Contient la valeur 1 si le nom est un synonyme mal appliqué (cas des sensu). Dans le cas contraire"),
78
			"synorth" => array("Synonyme orthographique","","Contient l'identifiant numérique du nom (num_nom) correctement orthographié"),
78
			"synorth" => array("Synonyme orthographique","","Contient l'identifiant numérique du nom (num_nom) correctement orthographié"),
79
			"orthori" => array("Orthographe originelle","","Contient la graphie originelle d'un nom non-conforme faisant l'objet d'une correction orthographique obligatoire"),
79
			"orthori" => array("Orthographe originelle","","Contient la graphie originelle d'un nom non-conforme faisant l'objet d'une correction orthographique obligatoire"),
80
			"hybp01n" => array("Hybride parent 1 notes","","Notes éventuelles sur l'hybridité et le parent numéro 1"),
80
			"hybp01n" => array("Hybride parent 1 notes","","Notes éventuelles sur l'hybridité et le parent numéro 1"),
81
			"hybp02n" => array("Hybride parent 2 notes","","Notes éventuelles sur l'hybridité et le parent numéro 2"),
81
			"hybp02n" => array("Hybride parent 2 notes","","Notes éventuelles sur l'hybridité et le parent numéro 2"),
82
			"cultgp" => array("Groupe de cultivar","","Nom d'un groupe de cultivar (sansl'abréviation « Gp »)"),
82
			"cultgp" => array("Groupe de cultivar","","Nom d'un groupe de cultivar (sansl'abréviation « Gp »)"),
83
			"cult" => array("Nom cultivar","","Nom d'un cultivar (sans les guillemets simple ou abréviation « cv. »)"),
83
			"cult" => array("Nom cultivar","","Nom d'un cultivar (sans les guillemets simple ou abréviation « cv. »)"),
84
			"nomcomm" => array("Nom commercial","","Nom commercial d'une plante (en majuscule"),
84
			"nomcomm" => array("Nom commercial","","Nom commercial d'une plante (en majuscule"),
85
			"autres" => array("Autres","","colonnes spécifiques au référentiel"));
85
			"autres" => array("Autres","","colonnes spécifiques au référentiel"));
86
	}
86
	}
87
	
87
	
88
	//+----------------------------------------------------------------------------------------------------------------+
88
	//+----------------------------------------------------------------------------------------------------------------+
89
	// Méthodes
89
	// Méthodes
90
	/**
90
	/**
91
	 * Fonction d'affichage par défaut
91
	 * Fonction d'affichage par défaut
92
	 */
92
	 */
93
	public function executerActionParDefaut() {
93
	public function executerActionParDefaut() {
94
		return $this->afficherDetail();
94
		return $this->afficherDetail();
95
	}
95
	}
96
 
96
 
97
	/**
97
	/**
98
	 * Affiche le détail d'un référentiel et la liste des actions possibles
98
	 * Affiche le détail d'un référentiel et la liste des actions possibles
99
	 */
99
	 */
100
	public function afficherDetail() {
100
	public function afficherDetail() {
101
		$this->definirCommeModulePrincipal('Informations');
101
		$this->definirCommeModulePrincipal('Informations');
102
		$donnees = $this->preparerPagePourDetailReferentielEtTelechargement();
102
		$donnees = $this->preparerPagePourDetailReferentielEtTelechargement();
103
 
103
 
104
		$donnees['messages'] = $this->getMessages();
104
		$donnees['messages'] = $this->getMessages();
105
		$this->traiterEsperluette($donnees);
105
		$this->traiterEsperluette($donnees);
106
		$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
106
		$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
107
	}
107
	}
108
 
108
 
109
	public function telecharger() {
109
	public function telecharger() {
110
		$dossier = Config::get('chemin_tmp');
110
		$dossier = Config::get('chemin_tmp');
111
		$parametres['ref'] = $this->referentiel;
111
		$parametres['ref'] = $this->referentiel;
112
		$parametres['version'] = $_POST["version"];
112
		$parametres['version'] = $_POST["version"];
113
		$parametres['version'] = str_replace(".", "_", $parametres['version']);
113
		$parametres['version'] = str_replace(".", "_", $parametres['version']);
114
		if (isset($_POST["champs"])) $parametres['champs'] = implode(",",$_POST["champs"]);
114
		if (isset($_POST["champs"])) $parametres['champs'] = implode(",",$_POST["champs"]);
115
		if (isset($_POST["filtres"])) $parametres['filtres'] = implode(",",$_POST["filtres"]);
115
		if (isset($_POST["filtres"])) $parametres['filtres'] = implode(",",$_POST["filtres"]);
116
		if (isset($_POST["encodage"])) $parametres['encodage'] = $_POST["encodage"];
116
		if (isset($_POST["encodage"])) $parametres['encodage'] = $_POST["encodage"];
-
 
117
		
-
 
118
		$_POST['usage'] = empty($_POST['usage']) ? 'inconnu' : $_POST['usage'];
-
 
119
		$this->loggerExport($_SERVER['REMOTE_ADDR'], $_POST['usage'], $parametres['ref'], $parametres['version']);
-
 
120
		
117
		$this->supprimerAncienExport($dossier);
121
		$this->supprimerAncienExport($dossier);
118
		$ref = $this->referentielDao->exporter($parametres);
122
		$ref = $this->referentielDao->exporter($parametres);
119
		$meta = $this->metaDao->exporter($parametres);
123
		$meta = $this->metaDao->exporter($parametres);
120
 
124
 
121
		$dossierDateEtNomDeFichier = date('Y_m_d').'/'.$this->referentiel.time().'.zip';
125
		$dossierDateEtNomDeFichier = date('Y_m_d').'/'.$this->referentiel.time().'.zip';
122
		$cheminZip = $dossier.$dossierDateEtNomDeFichier;
126
		$cheminZip = $dossier.$dossierDateEtNomDeFichier;
123
		$zip = new ZipArchive();
127
		$zip = new ZipArchive();
124
		if($zip->open($cheminZip, ZipArchive::CREATE) === true) {
128
		if($zip->open($cheminZip, ZipArchive::CREATE) === true) {
125
			// Ajout des fichiers métadonnées, référentiel et manuel technique
129
			// Ajout des fichiers métadonnées, référentiel et manuel technique
126
			$meta = str_replace("\\/", "/", $meta);
130
			$meta = str_replace("\\/", "/", $meta);
127
			if (file_exists($meta)) {
131
			if (file_exists($meta)) {
128
				$metazip = $zip->addFile($meta, "informations.csv"); 
132
				$metazip = $zip->addFile($meta, "informations.csv"); 
129
			}
133
			}
130
			if (file_exists($ref)) {
134
			if (file_exists($ref)) {
131
				$refzip = $zip->addFile($ref, "referentiel.csv");
135
				$refzip = $zip->addFile($ref, "referentiel.csv");
132
			}
136
			}
133
			if (file_exists($dossier.'mtpr_V4_4.pdf')) {
137
			if (file_exists($dossier.'mtpr_V4_4.pdf')) {
134
				$zip->addFile($dossier.'mtpr_V4_4.pdf', 'manuel_technique.pdf');
138
				$zip->addFile($dossier.'mtpr_V4_4.pdf', 'manuel_technique.pdf');
135
			}
139
			}
136
			// Et on referme l'archive
140
			// Et on referme l'archive
137
			$zip->close();
141
			$zip->close();
138
		} else {
142
		} else {
139
			echo "Erreur : impossible d'ouvrir le fichier [$cheminZip]<br/>";
143
			echo "Erreur : impossible d'ouvrir le fichier [$cheminZip]<br/>";
140
		}
144
		}
141
 
145
 
142
		// on revient à la page de détail, avec un lien de téléchargement en prime
146
		// on revient à la page de détail, avec un lien de téléchargement en prime
143
		$donnees = $this->preparerPagePourDetailReferentielEtTelechargement();
147
		$donnees = $this->preparerPagePourDetailReferentielEtTelechargement();
144
		if (file_exists($cheminZip)) {
148
		if (file_exists($cheminZip)) {
145
			$urlLien = Config::get("base_url_telechargements") . $dossierDateEtNomDeFichier;
149
			$urlLien = Config::get("base_url_telechargements") . $dossierDateEtNomDeFichier;
146
			$donnees['url_telechargement_zip'] = $urlLien;
150
			$donnees['url_telechargement_zip'] = $urlLien;
147
		}
151
		}
148
		//$this->transformerEnXls($ref, $dossier);
152
		//$this->transformerEnXls($ref, $dossier);
149
		$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
153
		$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
150
	}
154
	}
-
 
155
	
-
 
156
	private function loggerExport($ip, $usage, $referentiel, $version) {
-
 
157
		$separateur = "\t";
-
 
158
		$ligne = date('Y-m-d H:i:s').$separateur.$ip.$separateur.$usage.$separateur.$referentiel.$separateur.$version."\n";
-
 
159
		file_put_contents(Config::get('base_chemin_log').'telechargements.log', $ligne, FILE_APPEND);
-
 
160
	}
151
	
161
	
152
	public function transformerEnXls($fichier, $dossier) {
162
	public function transformerEnXls($fichier, $dossier) {
153
		include '../bibliotheque/utilitaires/PHPExcel/IOFactory.php';
163
		include '../bibliotheque/utilitaires/PHPExcel/IOFactory.php';
154
		
164
		
155
		$dossier .= date('Y_m_d').'/';
165
		$dossier .= date('Y_m_d').'/';
156
	
166
	
157
		$objReader = PHPExcel_IOFactory::createReader('CSV');
167
		$objReader = PHPExcel_IOFactory::createReader('CSV');
158
	
168
	
159
		// If the files uses a delimiter other than a comma (e.g. a tab), then tell the reader
169
		// If the files uses a delimiter other than a comma (e.g. a tab), then tell the reader
160
		$objReader->setDelimiter("\t");
170
		$objReader->setDelimiter("\t");
161
		// If the files uses an encoding other than UTF-8 or ASCII, then tell the reader
171
		// If the files uses an encoding other than UTF-8 or ASCII, then tell the reader
162
		$objReader->setInputEncoding('UTF-8');
172
		$objReader->setInputEncoding('UTF-8');
163
	
173
	
164
		$objPHPExcel = $objReader->load($fichier);
174
		$objPHPExcel = $objReader->load($fichier);
165
		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
175
		$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
166
		$objWriter->save($dossier.'MyExcelFile.xls');
176
		$objWriter->save($dossier.'MyExcelFile.xls');
167
	}
177
	}
168
 
178
 
169
	// exécute la partie commune entre l'action "detail" et l'action "telecharger"
179
	// exécute la partie commune entre l'action "detail" et l'action "telecharger"
170
	protected function preparerPagePourDetailReferentielEtTelechargement() {
180
	protected function preparerPagePourDetailReferentielEtTelechargement() {
171
		$donnees = array();
181
		$donnees = array();
172
		// Traitement de l'info sur le code du référentiel
182
		// Traitement de l'info sur le code du référentiel
173
		if (isset($this->referentiel)) {
183
		if (isset($this->referentiel)) {
174
			$this->construireMenu($this->referentiel);
184
			$this->construireMenu($this->referentiel);
175
			$this->construireFilAriane($this->referentiel);
185
			$this->construireFilAriane($this->referentiel);
176
			$donnees['referentiel'] = $this->referentiel;
186
			$donnees['referentiel'] = $this->referentiel;
177
			$donnees['nom_referentiel'] = $this->referentielDao->getNom($this->referentiel);
187
			$donnees['nom_referentiel'] = $this->referentielDao->getNom($this->referentiel);
178
			$donnees['url_menu_test'] = $this->obtenirUrlMenuTest($this->referentiel);
188
			$donnees['url_menu_test'] = $this->obtenirUrlMenuTest($this->referentiel);
179
			$donnees['url_menu_versionnage'] = $this->obtenirUrlMenuVersionnage($this->referentiel);
189
			$donnees['url_menu_versionnage'] = $this->obtenirUrlMenuVersionnage($this->referentiel);
180
			$donnees['url_menu_consultation'] = $this->obtenirUrlMenuConsultation($this->referentiel);
190
			$donnees['url_menu_consultation'] = $this->obtenirUrlMenuConsultation($this->referentiel);
181
			$donnees['url_form_telech'] = $this->obtenirUrlDetailReferentielTelechargement($this->referentiel);
191
			$donnees['url_form_telech'] = $this->obtenirUrlDetailReferentielTelechargement($this->referentiel);
182
				
192
				
183
			// suppression du téléchargement pour bdbfx
193
			// suppression du téléchargement pour bdbfx
184
			if ($this->referentiel != 'bdbfx') {
194
			if ($this->referentiel != 'bdbfx') {
185
				$donnees['versions'] = $this->afficherFormulaireTelechargementsReferentiels();
195
				$donnees['versions'] = $this->afficherFormulaireTelechargementsReferentiels();
186
				$donnees['infos_telechargements'] = $this->afficherTelechargementsReferentiels();
196
				$donnees['infos_telechargements'] = $this->afficherTelechargementsReferentiels();
187
				$donnees['colonnesOrdonnees'] = $this->colonnesOrdonnees;
197
				$donnees['colonnesOrdonnees'] = $this->colonnesOrdonnees;
188
				$parametres['ref'] = $this->referentiel;
198
				$parametres['ref'] = $this->referentiel;
189
				$parametres['rg'] = '180';
199
				$parametres['rg'] = '180';
190
				$donnees['familles'] = $this->rechercheDao->chercher('ParDefaut', $parametres, 250);
200
				$donnees['familles'] = $this->rechercheDao->chercher('ParDefaut', $parametres, 250);
191
			}
201
			}
192
		} else {
202
		} else {
193
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdtfx).");
203
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdtfx).");
194
		}
204
		}
195
		return $donnees;
205
		return $donnees;
196
	}
206
	}
197
 
207
 
198
	private function supprimerAncienExport($dossier) {
208
	private function supprimerAncienExport($dossier) {
199
		$pointeur = opendir($dossier);
209
		$pointeur = opendir($dossier);
200
		// si pas d'erreur d'ouverture du dossier on lance le scan
210
		// si pas d'erreur d'ouverture du dossier on lance le scan
201
		if( $pointeur != false ) {
211
		if( $pointeur != false ) {
202
			// Parcours du repertoire
212
			// Parcours du repertoire
203
			while( $ss_dossier = readdir($pointeur)) {
213
			while( $ss_dossier = readdir($pointeur)) {
204
				if($ss_dossier != "." && $ss_dossier != "..") {
214
				if($ss_dossier != "." && $ss_dossier != "..") {
205
					$chemin_complet = $dossier . $ss_dossier;
215
					$chemin_complet = $dossier . $ss_dossier;
206
					if (is_dir($chemin_complet) && $ss_dossier < date('Y_m_d')) {
216
					if (is_dir($chemin_complet) && $ss_dossier < date('Y_m_d')) {
207
						$fichiers = scandir($chemin_complet);
217
						$fichiers = scandir($chemin_complet);
208
						foreach ($fichiers as $fichier) {
218
						foreach ($fichiers as $fichier) {
209
							if($fichier != "." && $fichier != "..") {
219
							if($fichier != "." && $fichier != "..") {
210
								unlink($chemin_complet."/".$fichier);
220
								unlink($chemin_complet."/".$fichier);
211
							}
221
							}
212
						}
222
						}
213
						rmdir($chemin_complet);
223
						rmdir($chemin_complet);
214
					}
224
					}
215
				}
225
				}
216
			}
226
			}
217
			closedir($pointeur);
227
			closedir($pointeur);
218
		}
228
		}
219
	}
229
	}
220
	
230
	
221
	private function afficherFormulaireTelechargementsReferentiels() {
231
	private function afficherFormulaireTelechargementsReferentiels() {
222
		$versions = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
232
		$versions = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
223
		if ($versions != null) {
233
		if ($versions != null) {
224
			foreach ($versions as $id => $version) {
234
			foreach ($versions as $id => $version) {
225
				$versions[$id] = (unserialize($versions[$id]["script_parametres"]));
235
				$versions[$id] = (unserialize($versions[$id]["script_parametres"]));
226
			}
236
			}
227
		}
237
		}
228
		return $versions;
238
		return $versions;
229
	}
239
	}
230
	private function afficherTelechargementsReferentiels() {
240
	private function afficherTelechargementsReferentiels() {
231
		$infos_telechargements = array();
241
		$infos_telechargements = array();
232
		// Recherche des traitements déjà effectué
242
		// Recherche des traitements déjà effectué
233
		$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
243
		$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
234
		if (is_array($resultat)) {
244
		if (is_array($resultat)) {
235
			foreach ($resultat as &$traitement) {
245
			foreach ($resultat as &$traitement) {
236
				$infos_traitement = $this->traitementDao->getInfos($traitement['id_traitement']);
246
				$infos_traitement = $this->traitementDao->getInfos($traitement['id_traitement']);
237
				if ($infos_traitement != false) {
247
				if ($infos_traitement != false) {
238
					// Recherche des fichiers disponibles
248
					// Recherche des fichiers disponibles
239
					$infos_zip = $this->obtenirUrlsZipPourTraitement($infos_traitement);
249
					$infos_zip = $this->obtenirUrlsZipPourTraitement($infos_traitement);
240
					$infos_telechargements[] = array(
250
					$infos_telechargements[] = array(
241
								'infos_traitement' => $traitement,
251
								'infos_traitement' => $traitement,
242
								'description' => $this->creerDescriptionTelechargement($traitement),
252
								'description' => $this->creerDescriptionTelechargement($traitement),
243
								'urls_zip' => $infos_zip);
253
								'urls_zip' => $infos_zip);
244
				}
254
				}
245
			}
255
			}
246
		}
256
		}
247
		return $infos_telechargements;
257
		return $infos_telechargements;
248
	}
258
	}
249
		
259
		
250
	private function creerDescriptionTelechargement($traitement) {
260
	private function creerDescriptionTelechargement($traitement) {
251
		return strftime('%e %B %Y', strtotime($traitement['meta_date_creation'])).' ('.$this->referentielDao->getNom($this->referentiel).') ';
261
		return strftime('%e %B %Y', strtotime($traitement['meta_date_creation'])).' ('.$this->referentielDao->getNom($this->referentiel).') ';
252
	}
262
	}
253
	
263
	
254
}
264
}
255
?>
265
?>