Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 917 → Rev 1050

/trunk/widget/modules/saisie/Saisie.php
19,12 → 19,14
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
*/
class Saisie extends WidgetCommun {
 
const DS = DIRECTORY_SEPARATOR;
const PROJET_DEFAUT = 'biodiversite34';
const WS_SAISIE = "CelWidgetSaisie";
 
private $projet = null;
private $configProjet = null;
 
/**
* Méthode appelée par défaut pour charger ce widget.
*/
38,7 → 40,7
$this->projet = $projet;
}
$this->chargerConfigProjet();
 
$service = (isset($service)) ? $service : $this->projet;
$methode = $this->traiterNomMethodeExecuter($service);
if (method_exists($this, $methode)) {
47,35 → 49,34
$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
}
 
if (is_null($retour)) {
$contenu = 'Un problème est survenu : '.print_r($this->messages, true);
} else {
$contenu = null;
$mime = null;
if (is_array($retour) && array_key_exists('squelette', $retour)) {
$ext = (isset($retour['squelette_ext'])) ? $retour['squelette_ext'] : '.tpl.html';
$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$this->projet.self::DS.$retour['squelette'].$ext;
$contenu = $this->traiterSquelettePhp($squelette, $retour['donnees']);
$mime = isset($retour['mime']) ? $retour['mime'] : null;
} else {
if (count($this->messages) == 0) {
$this->messages[] = "La méthode du sous-service ne renvoie pas les données dans le bon format.";
}
$contenu = 'Un problème est survenu : '.print_r($this->messages, true);
}
$this->envoyer($contenu);
 
$this->envoyer($contenu, $mime);
}
 
private function chargerConfigProjet() {
$fichier_config = dirname(__FILE__).self::DS.'configurations'.self::DS.$this->projet.'.ini';
if (file_exists($fichier_config)) {
if (!$this->configProjet = parse_ini_file($fichier_config)) {
$this->messages[] = "Le fichier ini '$fichier_config' du projet n'a pu être chargé.";
}
}
} else {
$this->messages[] = "Le fichier ini '$fichier_config' du projet n'existe pas.";
}
}
public function executerBiodiversite34() {
$widget['squelette'] = $this->projet;
$widget['donnees'] = array();
$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
$widget['donnees']['taxons'] = $this->recupererListeTaxonBiodiversite34();
$widget['donnees']['milieux'] = $this->parserMilieuxBiodiversite34();
return $widget;
}
 
public function executerTaxons() {
$widget['squelette'] = $this->projet.'_taxons';
$widget['squelette_ext'] = '.tpl.js';
89,7 → 90,83
$widget['donnees']['taxons'] = json_encode($taxons_tries);
return $widget;
}
 
public function executerUploadImage() {
$retour = array();
if ($_FILES['fichier']['error'] == 0) {
if (is_uploaded_file($_FILES['fichier']['tmp_name'])) {
if ($_FILES['fichier']['type'] == 'image/jpeg') {
$dossierStockage = $this->config['chemins']['imagesTempDossier'];
 
$nomFichierOriginal = preg_replace('/[.](jpeg|jpg)$/i', '.jpg', strtolower($_FILES['fichier']['name']));
$originalChemin = $dossierStockage.$nomFichierOriginal;
$deplacementOk = move_uploaded_file($_FILES['fichier']['tmp_name'], $originalChemin);
 
if ($deplacementOk === true) {
$miniatureFichier = str_replace('.jpg', '_min.jpg', $nomFichierOriginal);
$miniatureChemin = $dossierStockage.$miniatureFichier;
 
// Parametres
$largeurIdeale = 100;
$hauteurIdeale = 100;
$qualite = 85;
 
// Calcul de la hauteur et de la largeur optimale de la miniature
$taillesImgOriginale = getimagesize($originalChemin);
$largeurOrigine = $taillesImgOriginale[0];
$hauteurOrigine = $taillesImgOriginale[1];
 
$largeurMin = $largeurIdeale;
$hauteurMin = (int) ($hauteurOrigine * ($largeurIdeale / $largeurOrigine));
if ($hauteurMin > $hauteurIdeale) {
$hauteurMin = $hauteurIdeale;
$largeurMin = (int)($largeurOrigine * ($hauteurMin / $hauteurOrigine));
}
 
// Création de la miniature
$imageOriginale = imagecreatefromjpeg($originalChemin);
$imageMiniature = imagecreatetruecolor($largeurMin, $hauteurMin);
$couleurFond = imagecolorallocate($imageMiniature, 255, 255, 255);
imagefill($imageMiniature, 0, 0, $couleurFond);
imagecopyresized($imageMiniature, $imageOriginale, 0, 0, 0, 0, $largeurMin, $hauteurMin, $largeurOrigine, $hauteurOrigine);
imagejpeg($imageMiniature, $miniatureChemin, $qualite);
imagedestroy($imageMiniature);
imagedestroy($imageOriginale);
 
// Retour des infos
$retour['squelette'] = $this->projet.'_image';
$retour['squelette_ext'] = '.tpl.xml';
$retour['donnees']['urlMiniature'] = sprintf($this->config['chemins']['imagesTempUrlTpl'], $miniatureFichier);
$retour['donnees']['imageNom'] = $nomFichierOriginal;
$retour['mime'] = 'text/xml';
} else {
$this->messages[] = "L'image n'a pu être déplacé sur le serveur.";
}
} else {
$this->messages[] = "L'image n'est pas au format JPEG.";
}
} else {
$this->messages[] = "L'image n'a pu être uploadée :".print_r($_FILES, true);
}
} else {
$this->messages[] = "Une erreur de transfert a eu lieu (téléversement interrompu). ".
"Code erreur : {$_FILES['fichier']['error']}. ".
"Voir : http://php.net/manual/fr/features.file-upload.errors.php";
}
return $retour;
}
 
public function executerBiodiversite34() {
$widget['squelette'] = $this->projet;
$widget['donnees'] = array();
$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
$widget['donnees']['url_ws_saisie'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_SAISIE);
 
$widget['donnees']['taxons'] = $this->recupererListeTaxonBiodiversite34();
$widget['donnees']['milieux'] = $this->parserMilieuxBiodiversite34();
return $widget;
}
 
private function parserMilieuxBiodiversite34() {
$infosMilieux = array();
$milieux = explode('|', $this->configProjet['milieux']);
104,7 → 181,7
ksort($infosMilieux);
return $infosMilieux;
}
 
private function recupererListeTaxonBiodiversite34() {
$taxons = null;
$fichier_tsv = dirname(__FILE__).self::DS.'configurations'.self::DS.'biodiversite34_taxons.tsv';
113,12 → 190,48
} else {
$this->debug[] = "Impossible d'ouvrir le fichier '$fichier_tsv'.";
}
 
$taxons_tries = self::trierTableauMd($taxons, array('nom_fr' => SORT_ASC));
 
return $taxons_tries;
}
 
public function executerSauvages() {
$widget['squelette'] = $this->projet;
$widget['donnees'] = array();
$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
$widget['donnees']['url_ws_saisie'] = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::WS_SAISIE);
 
$widget['donnees']['taxons'] = $this->recupererListeTaxonSauvages();
$widget['donnees']['milieux'] = $this->parserMilieuxSauvages();
return $widget;
}
 
private function parserMilieuxSauvages() {
$infosMilieux = array();
$milieux = explode('|', $this->configProjet['milieux']);
foreach ($milieux as $milieu) {
$details = explode(';', $milieu);
if (isset($details[1])) {
$infosMilieux[$details[0]] = $details[1];
} else {
$infosMilieux[$details[0]] = '';
}
}
return $infosMilieux;
}
 
private function recupererListeTaxonSauvages() {
$taxons = null;
$fichier_tsv = dirname(__FILE__).self::DS.'configurations'.self::DS.'sauvages_taxons.tsv';
if (file_exists($fichier_tsv) && is_readable($fichier_tsv)) {
$taxons = $this->decomposerFichierTsv($fichier_tsv);
} else {
$this->debug[] = "Impossible d'ouvrir le fichier '$fichier_tsv'.";
}
return $taxons;
}
 
private function decomposerFichierTsv($fichier, $delimiter = "\t"){
$header = NULL;
$data = array();
126,12 → 239,12
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
if (!$header) {
$header = $row;
} else {
} else {
$data[] = array_combine($header, $row);
}
}
fclose($handle);
}
return $data;
return $data;
}
}
/trunk/widget/modules/saisie/configurations/sauvages.ini
New file
0,0 → 1,0
milieux="Fissures|Pied d'arbre|Mur|Pelouse|Plate bande|Haie|Chemin;"
/trunk/widget/modules/saisie/configurations/sauvages_taxons.tsv
New file
0,0 → 1,44
nom_sel num_nom_sel nom_ret num_nom_ret num_taxon famille nom_fr nom_fr_autre
Pancratium maritimum L. 47379 Pancratium maritimum L. 47379 5834 Amaryllidaceae Lis de mer
Echinophora spinosa L. 23444 Echinophora spinosa L. 23444 166 Apiaceae Panais épineux
Calystegia soldanella (L.) Roem. & Schult. 12352 Calystegia soldanella (L.) Roem. & Schult. 12352 2450 Convolvulaceae Liserons de mer
Eryngium maritimum L. 25390 Eryngium maritimum L. 25390 173 Apiaceae Panicaut
Althaea officinalis L. 3752 Althaea officinalis L. 3752 3806 Malvaceae Guimauve
Narcissus tazetta L. 43691 Narcissus tazetta L. 43691 5824 Amaryllidaceae Narcisse à bouquet
Anacamptis palustris (Jacq.) Bateman, Pridgeon & Chase 4317 Anacamptis palustris (Jacq.) Bateman, Pridgeon & Chase 4317 6542 Orchidaceae Orchis des marais
Legousia speculum-veneris (L.) Chaix 38202 Legousia speculum-veneris (L.) Chaix 38202 1920 Campanulaceae Miroir de Vénus
Centaurea cyanus L. 15139 Centaurea cyanus L. 15139 576 Asteraceae Bleuet
Nigella damascena L. 44101 Nigella damascena L. 44101 4465 Ranunculaceae Nigelle de Damas
Echinops ritro L. 75102 Echinops ritro L. 75102 30094 Asteraceae Oursin bleu
Cucubalus baccifer L. 20167 Cucubalus baccifer L. 20167 2042 Caryophyllaceae Coulichon
Cortaderia selloana (Schult. & Schult.f.) Asch. & Graebn. 19053 Cortaderia selloana (Schult. & Schult.f.) Asch. & Graebn. 19053 6742 Poaceae Herbe de la pampa
Convolvulus althaeoides L. 18732 Convolvulus althaeoides L. 18732 2452 Convolvulaceae Liseron de Provence Fausse guimauve
Narcissus assoanus Dufour 43518 Narcissus assoanus Dufour 43518 5806 Amaryllidaceae Narcisse d'Asso
Lavandula stoechas L. 75211 Lavandula stoechas L. 75211 30203 Lamiaceae Lavande stéchade
Trifolium stellatum L. 69418 Trifolium stellatum L. 69418 14839 Fabaceae Trèfle étoilé
Cneorum tricoccon L. 18308 Cneorum tricoccon L. 18308 2446 Cneoraceae Camélée Garoupe
Amanita ovoidea Amanite ovoide
Leuzea conifera (L.) DC. 38821 Leuzea conifera (L.) DC. 38821 1050 Asteraceae Leuzée conifère Pomme-de-pin
Populus alba L. 51965 Populus alba L. 51965 5124 Salicaceae Peuplier blanc
Iris pseudacorus L. 35960 Iris pseudacorus L. 35960 6103 Iridaceae Iris faux acore
Robinia pseudoacacia L. 56245 Robinia pseudoacacia L. 56245 3124 Fabaceae Acacia Robinier faux acacia
Parnassia palustris L. 47942 Parnassia palustris L. 47942 5203 Parnassiaceae Parnassie des marais
Alisma plantago-aquatica L. 2871 Alisma plantago-aquatica L. 2871 5785 Alismataceae Plantain d'eau
Quercus suber L. 54585 Quercus suber L. 54585 3297 Fagaceae Chêne-liège
Buxus sempervirens L. 11691 Buxus sempervirens L. 11691 1842 Buxaceae Buis
Sorbus torminalis (L.) Crantz 65340 Sorbus torminalis (L.) Crantz 65340 4996 Rosaceae Alisier torminal
Smilax aspera L. 64818 Smilax aspera L. 64818 6383 Smilacaceae Salsepareille
Ruscus aculeatus L. 58960 Ruscus aculeatus L. 58960 6367 Ruscaceae Fragon faux houx
Quercus pubescens Willd. 54438 Quercus pubescens Willd. 54438 13623 Fagaceae Chêne pubescent
Arbutus unedo L. 6055 Arbutus unedo L. 6055 2648 Ericaceae Arbousier
Ailanthus altissima (Mill.) Swingle 2088 Ailanthus altissima (Mill.) Swingle 2088 5537 Simaroubaceae Faux Vernis du Japon
Colchicum autumnale L. 18541 Colchicum multiflorum Brot. 18564 6293 Colchicaceae Colchique d'automne Safran des prés
Carlina acanthifolia All. 14560 Carlina acanthifolia All. 14560 548 Asteraceae Chardon du Larzac (baromêtre) Carline à feuilles d'acanthe
Hormathophylla spinosa (L.) Küpfer 34932 Hormathophylla spinosa (L.) Küpfer 34932 1689 Brassicaceae Alysson épineux
Dactylorhiza latifolia (L.) Baumann & Künkele 21395 Dactylorhiza latifolia (L.) Baumann & Künkele 21395 9693 Orchidaceae Orchis sureau
Ilex aquifolium L. 35676 Ilex aquifolium L. 35676 326 Aquifoliaceae Houx
Scilla lilio-hyacinthus L. 61487 Scilla lilio-hyacinthus L. 61487 6376 Hyacinthaceae Scille lis-jacinthe
Lobaria pulmonaria Lichen pulmonaire
Adiantum capillus-veneris L. 817 Adiantum capillus-veneris L. 817 7327 Adiantaceae Capillaire de Montpellier
Acanthus mollis L. 74930 Acanthus mollis L. 74930 29922 Acanthaceae Acanthe molle
Bothriochloa barbinodis (Lag.) Herter 9977 Bothriochloa barbinodis (Lag.) Herter 9977 6775 Poaceae Pied-de-poule