Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2767 → Rev 2768

/branches/v2.23-rouleau/jrest/bibliotheque/Bdd.php
Property changes:
Modified: svn:mergeinfo
Merged /trunk/jrest/bibliotheque/Bdd.php:r2758,2760-2766
/branches/v2.23-rouleau/jrest/bibliotheque/GestionMotsClesChemin.php
Property changes:
Modified: svn:mergeinfo
Merged /trunk/jrest/bibliotheque/GestionMotsClesChemin.php:r2758,2760-2766
/branches/v2.23-rouleau/jrest/services/ImportXLS.php
349,34 → 349,65
public function getElement($uid) {
if($uid[0] == "template") {
//$tpl = '/home/aurelien/web/cel_GWT2/jrest/modele_import.xls';
$tpl = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR.'modele_import.xls';
//echo $tpl;exit;
 
$tpl_dir = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
$tpl = $tpl_dir.'modele_import.xls';
 
$lecteur = PHPExcel_IOFactory::createReaderForFile($tpl);
$classeur_tpl = $lecteur->load($tpl);
$feuille_tpl = $classeur_tpl->getActiveSheet();
// Détection de la dernière colonne pour connaitre la position d'ajout des champs étendus
// Si un groupe est demandé
$lettre_colonne_max = $feuille_tpl->getHighestColumn();
$nb_colonne_max = PHPExcel_Cell::columnIndexFromString($lettre_colonne_max);
$ligne = 1;
$nb_colonne_en_cours = $nb_colonne_max;
$nb_colonne_en_cours = $nb_colonne_max;
 
// Obtention des descriptions de champs communs et spécifiques
$descriptions = $this->obtenirDescriptions($tpl_dir.'modele_import_description.txt');
if(!empty($_GET['groupe'])) {
$descriptions = $this->obtenirDescriptions($tpl_dir.'modele_import_description_'.$_GET['groupe'].'.txt', $descriptions);
}
// Association de la description des champs commun
for($i = 0; $i < $nb_colonne_max; $i++) {
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($i);
$champ_obl = $feuille_tpl->getCell($lettre_colonne.$ligne)->getValue();
if(!empty($descriptions[$champ_obl])) {
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ_obl]);
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
}
}
$nom_fichier = 'import';
// Ajout des colonnes spécifiques si un groupe de champ est demandé
if(!empty($_GET['groupe'])) {
$requete = "SELECT * FROM cel_catalogue_champs_etendus_liaison WHERE GROUPE = ".Cel::db()->proteger($_GET['groupe']);
$requete = "SELECT * FROM cel_catalogue_champs_etendus_liaison WHERE groupe = ".Cel::db()->proteger($_GET['groupe']);
$champs = Cel::db()->requeter($requete);
 
foreach($champs as $champ) {
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
$lettre_colonne = PHPExcel_Cell::stringFromColumnIndex($nb_colonne_en_cours);
// Les champs étendus sont préfixés par "ext:" pour ne pas être ignoré lors d'un import
// l'import ignore les noms de colonnes qu'il ne connait pas
$feuille_tpl->setCellValue($lettre_colonne.$ligne, 'ext:'.$champ['champ']);
// Ajout de la description dans le commentaire si elle est présente
if(!empty($descriptions[$champ['champ']])) {
$feuille_tpl->getComment($lettre_colonne.$ligne)->getText()->createTextRun($descriptions[$champ['champ']]);
$feuille_tpl->getComment($lettre_colonne.$ligne)->setWidth(400);
}
$nb_colonne_en_cours++;
}
$nom_fichier .= '_'.$_GET['groupe'];
}
 
// Seul le format xlsx permet l'association de commentaires de colonnes dans PHPExcel
// C'est triste mais bon mais c'est trop pratique pour qu'on s'en passe
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xls"');
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel5');
header('Content-Disposition: attachment; filename="'.$nom_fichier.'.xlsx"');
$generateur = PHPExcel_IOFactory::createWriter($classeur_tpl, 'Excel2007');
$generateur->save('php://output');
exit;
383,6 → 414,24
}
}
private function obtenirDescriptions($fichier_description, $descriptions = array()) {
if(file_exists($fichier_description)) {
$descs_str = file_get_contents($fichier_description);
$desc_items = explode("\n", $descs_str);
foreach($desc_items as $item) {
$cle_valeur = explode("=", $item);
$valeur_desc = trim($cle_valeur[1]);
// Les clés des fichiers sont écrasées dans l'ordre de lecture ce qui permet
// d'avoir par exemple une description différente pour le champ station suivant le projet
// les "<br />" sont remplacés par des sauts de lignes
$descriptions[trim($cle_valeur[0])] = str_replace('<br />', "\n", $valeur_desc);
}
}
return $descriptions;
}
public function getRessource() {
return self::getStatsDernierUpload();
}
/branches/v2.23-rouleau/jrest/services/squelettes/modele_import_description_sauvages.txt
New file
0,0 → 1,7
Station = Nom de la rue étudiée
coteRue = le (ou les) côté(s) de la rue étudiée ("pair", "impair", "2cotes")
adresse = Nom de la rue étudiée
latitudeDebutRue = Latitude de début de rue
latitudeFinRue = Longitude de début de rue
longitudeDebutRue = Latitude de fin de rue
longitudeFinRue = Latitude de fin de rue
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
/branches/v2.23-rouleau/jrest/services/squelettes/modele_import_description.txt
New file
0,0 → 1,18
Espèce = Nom scientifique de l'espèce <br />ou bien chaine au format referentiel:nn:num_tax <br />ou referentiel:nt:num_nom <br />(Ex.: "bdtfx:nn:182")
Referentiel taxonomique = Code du référentiel taxonomique (bdtfx, isfan, apd, etc...)
Commune = Nom de la commune
Identifiant Commune = Code INSEE de la commune (uniquement pour les communes françaises)
Date = date de l'observation au format jj/mm/aaaa
Lieu-dit = Toponyme plus précis que la commune, utilisé localement et se trouvant souvent sur les cartes au 1/25 000
Station = Station associée à l'observation
Milieu = Milieu de l'observation (Ex. : "pelouse", "prairie humide")
Notes = Texte libre
Latitude = En décimal système WGS84, exemple : 45.666
Longitude = En décimal système WGS84, exemple : 3.55
Altitude = Altitude en mètres
Mots Clés = Mots clés à associer à l'observation, séparés par des virgules
Transmis = 0 ou 1 pour indiquer si l'observation est publique ou privée
Abondance = Abondance de l'espèce observée (selon l'échelle d'abondance-dominance BRAUN-BLANQUET et al. ou bien texte libre)
Certitude = Certitude de la détermination ("certain", "douteux", "aDeterminer" ou bien texte libre)
Phénologie = Stade phénologique de l'espèce observée (code BBCH ou bien texte libre)
Image(s) = Noms des images préalablement chargées dans le CEL à associer à l'observation, séparés par des virgules
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
/branches/v2.23-rouleau/jrest/services/squelettes/modele_import_description_arbres-tetards.txt
New file
0,0 → 1,12
milieu = Situations correspondants au site, séparées par des virgules <br /> ("séparation de parcelle", "proximité de bâtiment", "plein champ", "jardin de particulier", "bord de cours d'eau",<br /> "bord de chemin", "intégré à une haie", "en forêt", "en zone humide")
arbreTetardAligneNbre = Nombre d'arbres têtards alignés
arbreTetardClasseCirconferenceA1m = Classe de circonférence à 1 m du sol (en m) ("0-0,5", "0,5-2", "2-3", "+3")
arbreTetardEntretientCoupe = Type d’entretien de l'arbre, en précisant la périodicité des coupes ("récente", "ancienne", "non entretenu")
arbreTetardEtatSanitaire = État sanitaire de l'arbre têtard ("mort", "dépérissant", "bon")
arbreTetardFormation = Type de formation de l'arbre ou des arbres têtards ("alignement", "isolé")
arbreTetardHauteurTete = Hauteur de la tête (en m) ("0-1,5", "1,5-3", "+3")
arbreTetardPresenceCavite = Présence ou non de cavités sur l'arbre ("aucune", "petite", "grande")
arbreTetardPresenceSp = Présence d'espèces sur l'arbre<br />Vous pouvez éventuellement indiquer des informations du type : Champignons ; Lierre ; Mousses ; Lichens ; Autre plante...<br /> Larve d'insecte saproxylique ; Galerie dans le bois ; Pelote de réjection ; Nid ; Crotte ; Trou
arbreTetardTailleType = Type de taille ("trogne", "tête de chat", "émonde" ou bien texte libre)
coordonneelambert93x = Coordonnée x de l'espèce observée au format lambert 93
coordonneelambert93y = Coordonnée y de l'espèce observée au format lambert 93
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property
/branches/v2.23-rouleau/jrest/services/squelettes/modele_import.xls
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/v2.23-rouleau/jrest/services/squelettes/modele_import_description_florileges.txt
New file
0,0 → 1,23
Milieu = Milieux dans lesquels l'espèce est présente sur le site, séparés par des virgules <br />("chemin", "fissures", "haie", "mur", "pelouse", "pied d'arbre", "plate bande")
adresse = Adresse du site étudié
dateArretTraitementPhyto = Date d'arrêt des traitements (au format jj/mm/aaaa)
dateDerniereIntervention = Dernière intervention ("inconnue", "plus de 3 ans", "entre 1 et 3 ans", "moins d'1 an", "au cours du dernier semestre",<br /> "au cours du dernier trimestre", "au cours des 30 derniers jours", "au cours des 7 derniers jours")
hauteurBatimentAvoisinant = Hauteur des bâtiments avoisinants en mètres ("0", "1", "2", "3", "4", "5 et +")
hauteurPlante = Hauteur max. (en cm) de la plante
intensiteGestion = Intensité de gestion ("extensive", "intermédiaire", "intensive")
itineraireGestion = Description de l'itinéraire de gestion
latitudeDebutRue = Latitude de début de parcours
latitudeFinRue = Longitude de début de parcours
longitudeDebutRue = Latitude de fin de parcours
longitudeFinRue = Latitude de fin de parcours
perceptionRiverainMauvaise = Mauvaise perception par les riverains ? ("oui", "non", "inconnue")
perceptionTechnicien = Perception globale de l'espèce par l'équipe technique ("inconnue", "discrète", "esthétique", "gênante", "envahissante")
periodiciteTraitementPhyto = Utilisation de produits phytosanitaires ("régulière", "occasionnelle", "rare", "jamais")
personneFonction = Fonction de l'observateur
personneService = Service de l'observateur
personneStructure = Structure de l'observateur
presenceZoneVegetalise = Présence de zones végétalisés ("nulle", "faible", "moyenne", "importante")
resistanceTraitementPhyto = Résistance/résilience de l'espèce face aux traitements utilisés sur ce site <br /> ("faible", "intermédiaire", "forte", "très forte", "pas de traitement")
revetementSol = Revêtement au sol ("asphalte et enrobés", "pavés", "stabilisés, aires sablées", "graviers", "terre")
typoUrbaine = Typologie Urbaine ("centre ville", "faubourg", "quartier résidentiel", "zone commerciale", "zone d'activités")
vitesseCroissance = Vitesse de croissance de l'espèce sur ce site ("nulle", "lente", "moyenne", "rapide", "trop rapide")
Property changes:
Added: svn:eol-style
+native
\ No newline at end of property