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 (CD_NOM)","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 |
|
117 |
|
118 |
$_POST['usage'] = empty($_POST['usage']) ? 'inconnu' : $_POST['usage'];
|
118 |
$_POST['usage'] = empty($_POST['usage']) ? 'inconnu' : $_POST['usage'];
|
119 |
$this->loggerExport($_SERVER['REMOTE_ADDR'], $_POST['usage'], $parametres['ref'], $parametres['version']);
|
119 |
$this->loggerExport($_SERVER['REMOTE_ADDR'], $_POST['usage'], $parametres['ref'], $parametres['version']);
|
120 |
|
120 |
|
121 |
$this->supprimerAncienExport($dossier);
|
121 |
$this->supprimerAncienExport($dossier);
|
122 |
$ref = $this->referentielDao->exporter($parametres);
|
122 |
$ref = $this->referentielDao->exporter($parametres);
|
123 |
$meta = $this->metaDao->exporter($parametres);
|
123 |
$meta = $this->metaDao->exporter($parametres);
|
124 |
|
124 |
|
125 |
$dossierDateEtNomDeFichier = date('Y_m_d').'/'.$this->referentiel.time().'.zip';
|
125 |
$dossierDateEtNomDeFichier = date('Y_m_d').'/'.$this->referentiel.time().'.zip';
|
126 |
$cheminZip = $dossier.$dossierDateEtNomDeFichier;
|
126 |
$cheminZip = $dossier.$dossierDateEtNomDeFichier;
|
127 |
$zip = new ZipArchive();
|
127 |
$zip = new ZipArchive();
|
128 |
if($zip->open($cheminZip, ZipArchive::CREATE) === true) {
|
128 |
if($zip->open($cheminZip, ZipArchive::CREATE) === true) {
|
129 |
// 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
|
130 |
$meta = str_replace("\\/", "/", $meta);
|
130 |
$meta = str_replace("\\/", "/", $meta);
|
131 |
if (file_exists($meta)) {
|
131 |
if (file_exists($meta)) {
|
132 |
$metazip = $zip->addFile($meta, "informations.csv");
|
132 |
$metazip = $zip->addFile($meta, "informations.csv");
|
133 |
}
|
133 |
}
|
134 |
if (file_exists($ref)) {
|
134 |
if (file_exists($ref)) {
|
135 |
$refzip = $zip->addFile($ref, "referentiel.csv");
|
135 |
$refzip = $zip->addFile($ref, "referentiel.csv");
|
136 |
}
|
136 |
}
|
137 |
if (file_exists($dossier.'mtpr_V4_4.pdf')) {
|
137 |
if (file_exists($dossier.'mtpr_V4_4.pdf')) {
|
138 |
$zip->addFile($dossier.'mtpr_V4_4.pdf', 'manuel_technique.pdf');
|
138 |
$zip->addFile($dossier.'mtpr_V4_4.pdf', 'manuel_technique.pdf');
|
139 |
}
|
139 |
}
|
140 |
// Et on referme l'archive
|
140 |
// Et on referme l'archive
|
141 |
$zip->close();
|
141 |
$zip->close();
|
142 |
} else {
|
142 |
} else {
|
143 |
echo "Erreur : impossible d'ouvrir le fichier [$cheminZip]<br/>";
|
143 |
echo "Erreur : impossible d'ouvrir le fichier [$cheminZip]<br/>";
|
144 |
}
|
144 |
}
|
145 |
|
145 |
|
146 |
// 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
|
147 |
$donnees = $this->preparerPagePourDetailReferentielEtTelechargement();
|
147 |
$donnees = $this->preparerPagePourDetailReferentielEtTelechargement();
|
148 |
if (file_exists($cheminZip)) {
|
148 |
if (file_exists($cheminZip)) {
|
149 |
$urlLien = Config::get("base_url_telechargements") . $dossierDateEtNomDeFichier;
|
149 |
$urlLien = Config::get("base_url_telechargements") . $dossierDateEtNomDeFichier;
|
150 |
$donnees['url_telechargement_zip'] = $urlLien;
|
150 |
$donnees['url_telechargement_zip'] = $urlLien;
|
151 |
}
|
151 |
}
|
152 |
//$this->transformerEnXls($ref, $dossier);
|
152 |
//$this->transformerEnXls($ref, $dossier);
|
153 |
$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
|
153 |
$this->setSortie(self::RENDU_CORPS, $this->getVue('detail_referentiel', $donnees), false);
|
154 |
}
|
154 |
}
|
155 |
|
155 |
|
156 |
private function loggerExport($ip, $usage, $referentiel, $version) {
|
156 |
private function loggerExport($ip, $usage, $referentiel, $version) {
|
157 |
$separateur = "\t";
|
157 |
$separateur = "\t";
|
158 |
$ligne = date('Y-m-d H:i:s').$separateur.$ip.$separateur.$usage.$separateur.$referentiel.$separateur.$version."\n";
|
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);
|
159 |
file_put_contents(Config::get('base_chemin_log').'telechargements.log', $ligne, FILE_APPEND);
|
160 |
}
|
160 |
}
|
161 |
|
161 |
|
162 |
public function transformerEnXls($fichier, $dossier) {
|
162 |
public function transformerEnXls($fichier, $dossier) {
|
163 |
include '../bibliotheque/utilitaires/PHPExcel/IOFactory.php';
|
163 |
include '../bibliotheque/utilitaires/PHPExcel/IOFactory.php';
|
164 |
|
164 |
|
165 |
$dossier .= date('Y_m_d').'/';
|
165 |
$dossier .= date('Y_m_d').'/';
|
166 |
|
166 |
|
167 |
$objReader = PHPExcel_IOFactory::createReader('CSV');
|
167 |
$objReader = PHPExcel_IOFactory::createReader('CSV');
|
168 |
|
168 |
|
169 |
// 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
|
170 |
$objReader->setDelimiter("\t");
|
170 |
$objReader->setDelimiter("\t");
|
171 |
// 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
|
172 |
$objReader->setInputEncoding('UTF-8');
|
172 |
$objReader->setInputEncoding('UTF-8');
|
173 |
|
173 |
|
174 |
$objPHPExcel = $objReader->load($fichier);
|
174 |
$objPHPExcel = $objReader->load($fichier);
|
175 |
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
175 |
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
176 |
$objWriter->save($dossier.'MyExcelFile.xls');
|
176 |
$objWriter->save($dossier.'MyExcelFile.xls');
|
177 |
}
|
177 |
}
|
178 |
|
178 |
|
179 |
// 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"
|
180 |
protected function preparerPagePourDetailReferentielEtTelechargement() {
|
180 |
protected function preparerPagePourDetailReferentielEtTelechargement() {
|
181 |
$donnees = array();
|
181 |
$donnees = array();
|
182 |
// Traitement de l'info sur le code du référentiel
|
182 |
// Traitement de l'info sur le code du référentiel
|
183 |
if (isset($this->referentiel)) {
|
183 |
if (isset($this->referentiel)) {
|
184 |
$this->construireMenu($this->referentiel);
|
184 |
$this->construireMenu($this->referentiel);
|
185 |
$this->construireFilAriane($this->referentiel);
|
185 |
$this->construireFilAriane($this->referentiel);
|
186 |
$donnees['referentiel'] = $this->referentiel;
|
186 |
$donnees['referentiel'] = $this->referentiel;
|
187 |
$donnees['nom_referentiel'] = $this->referentielDao->getNom($this->referentiel);
|
187 |
$donnees['nom_referentiel'] = $this->referentielDao->getNom($this->referentiel);
|
188 |
$donnees['url_menu_test'] = $this->obtenirUrlMenuTest($this->referentiel);
|
188 |
$donnees['url_menu_test'] = $this->obtenirUrlMenuTest($this->referentiel);
|
189 |
$donnees['url_menu_versionnage'] = $this->obtenirUrlMenuVersionnage($this->referentiel);
|
189 |
$donnees['url_menu_versionnage'] = $this->obtenirUrlMenuVersionnage($this->referentiel);
|
190 |
$donnees['url_menu_consultation'] = $this->obtenirUrlMenuConsultation($this->referentiel);
|
190 |
$donnees['url_menu_consultation'] = $this->obtenirUrlMenuConsultation($this->referentiel);
|
191 |
$donnees['url_form_telech'] = $this->obtenirUrlDetailReferentielTelechargement($this->referentiel);
|
191 |
$donnees['url_form_telech'] = $this->obtenirUrlDetailReferentielTelechargement($this->referentiel);
|
192 |
|
192 |
|
193 |
// suppression du téléchargement pour bdbfx
|
193 |
// suppression du téléchargement pour bdbfx
|
194 |
if ($this->referentiel != 'bdbfx') {
|
194 |
if ($this->referentiel != 'bdbfx') {
|
195 |
$donnees['versions'] = $this->afficherFormulaireTelechargementsReferentiels();
|
195 |
$donnees['versions'] = $this->afficherFormulaireTelechargementsReferentiels();
|
196 |
$donnees['infos_telechargements'] = $this->afficherTelechargementsReferentiels();
|
196 |
$donnees['infos_telechargements'] = $this->afficherTelechargementsReferentiels();
|
197 |
$donnees['colonnesOrdonnees'] = $this->colonnesOrdonnees;
|
197 |
$donnees['colonnesOrdonnees'] = $this->colonnesOrdonnees;
|
198 |
$parametres['ref'] = $this->referentiel;
|
198 |
$parametres['ref'] = $this->referentiel;
|
199 |
$parametres['rg'] = '180';
|
199 |
$parametres['rg'] = '180';
|
200 |
$donnees['familles'] = $this->rechercheDao->chercher('ParDefaut', $parametres, 250);
|
200 |
$donnees['familles'] = $this->rechercheDao->chercher('ParDefaut', $parametres, 250);
|
201 |
}
|
201 |
}
|
202 |
} else {
|
202 |
} else {
|
203 |
$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).");
|
204 |
}
|
204 |
}
|
205 |
return $donnees;
|
205 |
return $donnees;
|
206 |
}
|
206 |
}
|
207 |
|
207 |
|
208 |
private function supprimerAncienExport($dossier) {
|
208 |
private function supprimerAncienExport($dossier) {
|
209 |
$pointeur = opendir($dossier);
|
209 |
$pointeur = opendir($dossier);
|
210 |
// 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
|
211 |
if( $pointeur != false ) {
|
211 |
if( $pointeur != false ) {
|
212 |
// Parcours du repertoire
|
212 |
// Parcours du repertoire
|
213 |
while( $ss_dossier = readdir($pointeur)) {
|
213 |
while( $ss_dossier = readdir($pointeur)) {
|
214 |
if($ss_dossier != "." && $ss_dossier != "..") {
|
214 |
if($ss_dossier != "." && $ss_dossier != "..") {
|
215 |
$chemin_complet = $dossier . $ss_dossier;
|
215 |
$chemin_complet = $dossier . $ss_dossier;
|
216 |
if (is_dir($chemin_complet) && $ss_dossier < date('Y_m_d')) {
|
216 |
if (is_dir($chemin_complet) && $ss_dossier < date('Y_m_d')) {
|
217 |
$fichiers = scandir($chemin_complet);
|
217 |
$fichiers = scandir($chemin_complet);
|
218 |
foreach ($fichiers as $fichier) {
|
218 |
foreach ($fichiers as $fichier) {
|
219 |
if($fichier != "." && $fichier != "..") {
|
219 |
if($fichier != "." && $fichier != "..") {
|
220 |
unlink($chemin_complet."/".$fichier);
|
220 |
unlink($chemin_complet."/".$fichier);
|
221 |
}
|
221 |
}
|
222 |
}
|
222 |
}
|
223 |
rmdir($chemin_complet);
|
223 |
rmdir($chemin_complet);
|
224 |
}
|
224 |
}
|
225 |
}
|
225 |
}
|
226 |
}
|
226 |
}
|
227 |
closedir($pointeur);
|
227 |
closedir($pointeur);
|
228 |
}
|
228 |
}
|
229 |
}
|
229 |
}
|
230 |
|
230 |
|
231 |
private function afficherFormulaireTelechargementsReferentiels() {
|
231 |
private function afficherFormulaireTelechargementsReferentiels() {
|
232 |
$versions = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
|
232 |
$versions = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
|
233 |
if ($versions != null) {
|
233 |
if ($versions != null) {
|
234 |
foreach ($versions as $id => $version) {
|
234 |
foreach ($versions as $id => $version) {
|
235 |
$versions[$id] = (unserialize($versions[$id]["script_parametres"]));
|
235 |
$versions[$id] = (unserialize($versions[$id]["script_parametres"]));
|
236 |
}
|
236 |
}
|
237 |
}
|
237 |
}
|
238 |
return $versions;
|
238 |
return $versions;
|
239 |
}
|
239 |
}
|
240 |
private function afficherTelechargementsReferentiels() {
|
240 |
private function afficherTelechargementsReferentiels() {
|
241 |
$infos_telechargements = array();
|
241 |
$infos_telechargements = array();
|
242 |
// Recherche des traitements déjà effectué
|
242 |
// Recherche des traitements déjà effectué
|
243 |
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
|
243 |
$resultat = $this->traitementDao->getTraitementsTermines($this->referentiel, 'versionnage');
|
244 |
if (is_array($resultat)) {
|
244 |
if (is_array($resultat)) {
|
245 |
foreach ($resultat as &$traitement) {
|
245 |
foreach ($resultat as &$traitement) {
|
246 |
$infos_traitement = $this->traitementDao->getInfos($traitement['id_traitement']);
|
246 |
$infos_traitement = $this->traitementDao->getInfos($traitement['id_traitement']);
|
247 |
if ($infos_traitement != false) {
|
247 |
if ($infos_traitement != false) {
|
248 |
// Recherche des fichiers disponibles
|
248 |
// Recherche des fichiers disponibles
|
249 |
$infos_zip = $this->obtenirUrlsZipPourTraitement($infos_traitement);
|
249 |
$infos_zip = $this->obtenirUrlsZipPourTraitement($infos_traitement);
|
250 |
$infos_telechargements[] = array(
|
250 |
$infos_telechargements[] = array(
|
251 |
'infos_traitement' => $traitement,
|
251 |
'infos_traitement' => $traitement,
|
252 |
'description' => $this->creerDescriptionTelechargement($traitement),
|
252 |
'description' => $this->creerDescriptionTelechargement($traitement),
|
253 |
'urls_zip' => $infos_zip);
|
253 |
'urls_zip' => $infos_zip);
|
254 |
}
|
254 |
}
|
255 |
}
|
255 |
}
|
256 |
}
|
256 |
}
|
257 |
return $infos_telechargements;
|
257 |
return $infos_telechargements;
|
258 |
}
|
258 |
}
|
259 |
|
259 |
|
260 |
private function creerDescriptionTelechargement($traitement) {
|
260 |
private function creerDescriptionTelechargement($traitement) {
|
261 |
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).') ';
|
262 |
}
|
262 |
}
|
263 |
|
263 |
|
264 |
}
|
264 |
}
|
265 |
?>
|
265 |
?>
|