Subversion Repositories eFlore/Archives.chorologie

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1 → Rev HEAD

/trunk/eflore_chorologie_contributeur.php
New file
0,0 → 1,163
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: eflore_chorologie_contributeur.php,v 1.2 2005-05-31 13:45:10 jpm Exp $
/**
* Affichage des contributeurs aux listes chorologiques.
*
* Ce script fournit le code html permettant d'afficher les contributeurs aux listes chorologiques.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-05-31 13:45:10 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTÊTE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/** Inclusion du fichier config de la base de données de l'application eflore-chorolgie. */
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config_bdd.inc.php';
/** Inclusion du fichier config de l'application eflore-chorolgie. */
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config.inc.php';
/** Inclusion du fichier de langue de l'application eflore-chorologie. */
require_once ECHORO_CHEMIN_LANGUE.'echoro_langue_'.ECHORO_LANGUE.'.inc.php';
 
// Ajout d'une feuille de style propre à eFlore.
GEN_stockerStyleExterne('echoro', ECHORO_CHEMIN_STYLE.'echoro.css');
 
/** Inclusion du fichier comportant des fonctions communes aux applis du package eFlore-chorologie.*/
include_once ECHORO_CHEMIN_BIBLIO.'echoro_information.fonct.php';
 
/** Inclusion du fichier gérant les fonctions d'encodage. */
include_once ECHORO_CHEMIN_BIBLIO.'echoro_encodage.fonct.php';
 
/** Inclusion du fichier gérant les fonctions fournissant l'affichage en XHTML. */
include_once ECHORO_CHEMIN_BIBLIO.'echoro_affichage_xhtml.fonct.php';
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
function afficherContenuNavigation()
{
$sortie = '';
return $sortie;
}
 
function afficherContenuTete()
{
$sortie = '';
return $sortie;
}
 
function afficherContenuCorps()
{
// +--------------------------------------------------------------------------------------------------+
// Initialisation
$sortie = '';
//Définition des attributs des de la balise <a> pour le lien sur le mail
//Ce tableau est utilisé par la fonction choro_dep_possederCourriel.
$tablo_formatLien['class']='eflore_lien';
$tablo_formatLien['title']='Cliquer pour écrire un message';
 
//Connection à la base
$connexion = mysql_connect(ECHORO_BDD_SERVEUR, ECHORO_BDD_UTILISATEUR, ECHORO_BDD_MOT_DE_PASSE) or die (ER_CONNECT);
mysql_select_db(BD_BOTA, $connexion) or die (ER_SEL_BD_BOTA);
//Requête sql qui récupére les informations sur les correspondant présents dans chaque département.
$requete_01 =
'SELECT '.EZD_ID.', '.EZD_NOM.', '.ECC_ID.', '.ECC_PRENOM.', '.ECC_NOM.', '.ECC_COURRIEL.
' FROM '.ECC_BD_TABLE.', '.EZD_BD_TABLE.', '.ECDC_BD_TABLE.
' WHERE '.EZD_ID.' = '.ECDC_DEP.
' AND '.ECDC_CORRES.' = '.ECC_ID.
' ORDER BY '.EZD_ID.' ASC';
$resultat_01 = mysql_query ($requete_01) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_01.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$num_dep = '';
//Inclusion du tite et de l'ouverture du tableau qui permetra d'afficher les correspondants.
$sortie .= inclusion_html('titre_contrib');
$sortie .= inclusion_html('intro_contrib');
//Boucle qui fournie les lignes du tableau.
//Chaque ligne contient :
//-soit le titre, càd numéro du département suivi de son nom
//-soit un correspondant
//-soit un message de recherche de correspondant
while($resultat_corres = mysql_fetch_array($resultat_01)) {
if ($num_dep != $resultat_corres[EZD_ID]){//Nous sommes dans le cas d'un nouveau département...
$num_dep = $resultat_corres[EZD_ID]; //Nous récupérons le numéro du nouveau département
// Nous fermons la liste du département précédent
if ($num_dep != 1) {
$sortie .= '</ul>'."\n";
}
//Nous affichons le titre
$sortie .= '<h2>'.$resultat_corres[EZD_ID].'&nbsp;-&nbsp;'.$resultat_corres[EZD_NOM].'</h2>'."\n";
$sortie .= '<ul>'."\n";
// Nous testons si on est dans le cas d'une recherche de correspondant pour le département
if ($resultat_corres[ECC_ID] == 0){
$sortie .= '<li>'.$resultat_corres[ECC_NOM].'</li>'."\n";
} else {
//Nous avons un correspondant pour le département et nous l'affichons
$sortie .= '<li>'.$resultat_corres[ECC_PRENOM].' '.strtoupper($resultat_corres[ECC_NOM]).' - ';
$sortie .= echoro_possederCourriel($resultat_corres[ECC_COURRIEL], $tablo_formatLien).'</li>'."\n";
}
} else {
//Nous sommes dans le cas où nous avons plus d'un correspondant pour le département
$sortie .= '<li>'.$resultat_corres[ECC_PRENOM].' '.strtoupper($resultat_corres[ECC_NOM]).' - ';
$sortie .= echoro_possederCourriel($resultat_corres[ECC_COURRIEL], $tablo_formatLien).'</li>'."\n";
}
}
$sortie .= '</ul>'."\n";
return remplaceEntiteHTLM($sortie);
}
 
function afficherContenuPied()
{
return inclusion_html('pied_page');
}
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/23 17:30:35 jpm
* Ajout de la consultation des contributeurs de la chorologie.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/configuration/echoro_config_bdd.inc.php
New file
0,0 → 1,76
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro_config_bdd.inc.php,v 1.3 2005-05-19 07:37:47 jpm Exp $
/**
* Fichier de configuration de la base de données de la chorologie d'eFlore.
*
* Fichier contenant des constantes permettant de stocker les informations de configuration de la base de données
* de l'application eFlore-chorologie.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.3 $ $Date: 2005-05-19 07:37:47 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
// +------------------------------------------------------------------------------------------------------+
// Paramétrage de la base de données.
/** Constante stockant le protocole d'accès à la base de données.*/
define('ECHORO_BDD_PROTOCOLE', 'mysql');
/** Constante stockant le nom du serveur de bases de données.*/
define('ECHORO_BDD_SERVEUR', 'localhost');
/** Constante stockant le nom de l'utilisateur de la base de données d'eFlore-chorologie.*/
define('ECHORO_BDD_UTILISATEUR', '');
/** Constante stockant le mot de passse de l'utilisateur de la base de données d'eFlore-chorologie.*/
define('ECHORO_BDD_MOT_DE_PASSE', '');
/** Constante stockant le nom de la base de données d'eFlore-chorologie.*/
define('ECHORO_BDD_NOM', '');
// +------------------------------------------------------------------------------------------------------+
// Paramétrage de la valeur du DSN pour Pear DB.
/** Constante stockant le DSN permetant de se connecter à la base de données d'eFlore-chorologie.*/
define('ECHORO_DSN', ECHORO_BDD_PROTOCOLE.'://'.ECHORO_BDD_UTILISATEUR.':'.ECHORO_BDD_MOT_DE_PASSE.'@'.ECHORO_BDD_SERVEUR.'/'.ECHORO_BDD_NOM);
/** Constante stockant le DSN permetant de se connecter aux serveurs des bases de données d'eFlore-chorologie.*/
define('ECHORO_DSN_SANS_BDD', ECHORO_BDD_PROTOCOLE.'://'.ECHORO_BDD_UTILISATEUR.':'.ECHORO_BDD_MOT_DE_PASSE.'@'.ECHORO_BDD_SERVEUR);
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.2 2005/02/22 19:36:55 jpm
* Ajout de constantes de configuration.
*
* Revision 1.1 2005/02/22 12:02:41 jpm
* Ajout des fichiers de configuration de l'application.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/configuration/echoro_config.inc.php
New file
0,0 → 1,358
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro_config.inc.php,v 1.7 2006-05-31 14:43:35 jp_milcent Exp $
/**
* Fichier de configuration de la chorologie d'eFlore.
*
* Fichier contenant des constantes et des variables globales permettant de configurer eFlore-chorologie.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.7 $ $Date: 2006-05-31 14:43:35 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
/** Definition de la variable globale d'eFlore.*/
$GLOBALS['_ECHORO_'] = array();
/** Constante stockant une URL de base de l'application recherche de plante sous forme d'objet Pear URL.*/
$GLOBALS['_ECHORO_']['url'] = $GLOBALS['_GEN_commun']['url'];
/** Constante stockant l'URL de base du site sous forme d'objet Pear URL.*/
$GLOBALS['_ECHORO_']['url_base'] =& new Net_URL('http://'.$_SERVER['HTTP_HOST'].'/');
 
// +------------------------------------------------------------------------------------------------------+
// Définition des chemins de fichiers.
/** Constante stockant le chemin de base de l'application de chorologie.*/
define('ECHORO_CHEMIN_APPLI', GEN_CHEMIN_CLIENT.'eflore_chorologie/');
/** Constante stockant le chemin absolu de base de l'application de chorologie.*/
define('ECHORO_CHEMIN_ABSO_APPLI', PAP_CHEMIN_RACINE.GEN_CHEMIN_CLIENT.'eflore_chorologie/');
/** Constante stockant le chemin vers le dossier "autres" de l'API général de Papyrus.*/
define('ECHORO_CHEMIN_API_AUTRE', GEN_CHEMIN_API.'autres/');
/** Constante stockant le chemin vers le dossier "PEAR" de l'API général de Papyrus.*/
define('ECHORO_CHEMIN_API_PEAR', PAP_CHEMIN_API_PEAR);
/** Constante stockant le chemin vers le dossier "fragmenteur" de l'API.*/
define('ECHORO_CHEMIN_API_FRAGMENTEUR', GEN_CHEMIN_API.'fragmenteur/');
/** Constante stockant le chemin vers le dossier "formulaire" de l'API.*/
define('ECHORO_CHEMIN_API_FORMULAIRE', GEN_CHEMIN_API.'formulaire/');
/** Constante stockant le chemin vers le dossier bibliothèque.*/
define('ECHORO_CHEMIN_BIBLIO', ECHORO_CHEMIN_APPLI.'bibliotheque/');
/** Constante stockant le chemin absolu vers le dossier bibliothèque.*/
define('ECHORO_CHEMIN_ABSO_BIBLIO', ECHORO_CHEMIN_ABSO_APPLI.'bibliotheque/');
/** Constante stockant le chemin vers le dossier bibliothèque de la cartographie.*/
define('ECHORO_CHEMIN_BIBLIO_CARTO', ECHORO_CHEMIN_BIBLIO.'cartographie/');
/** Constante stockant le chemin absolu vers le dossier bibliothèque de la cartographie.*/
define('ECHORO_CHEMIN_ABSO_BIBLIO_CARTO', ECHORO_CHEMIN_ABSO_BIBLIO.'cartographie/');
/** Constante stockant le chemin vers le dossier des images png de la bibliothèque cartographique.*/
define('ECHORO_CHEMIN_CARTE', ECHORO_CHEMIN_BIBLIO_CARTO.'cartes/');
/** Constante stockant le chemin vers le dossier présentation.*/
define('ECHORO_CHEMIN_PRESENTATION', ECHORO_CHEMIN_APPLI.'presentations/');
/** Constante stockant le chemin vers le dossier des langues.*/
define('ECHORO_CHEMIN_LANGUE', ECHORO_CHEMIN_APPLI.'langues/');
/** Constante stockant le chemin vers le dossier styles.*/
define('ECHORO_CHEMIN_STYLE', ECHORO_CHEMIN_PRESENTATION.'styles/');
/** Constante stockant le chemin vers le dossier script.*/
define('ECHORO_CHEMIN_SCRIPT', ECHORO_CHEMIN_PRESENTATION.'scripts/');
/** Constante stockant le chemin vers le dossier images.*/
define('ECHORO_CHEMIN_IMAGE', ECHORO_CHEMIN_PRESENTATION.'images/');
 
// +------------------------------------------------------------------------------------------------------+
// Définition de fichiers
/** Constante stockant le nom du fichier de la carte de France des départements.*/
define('ECHORO_FICHIER_CARTE_FR_DPT', 'france.png');
/** Constante stockant le nom du fichier de la carte de France des départements.*/
define('ECHORO_FICHIER_CARTE_FR_DPT_MASQUE', 'france_masque.png');
 
// +------------------------------------------------------------------------------------------------------+
// Définition de chemin d'accès et de nom de fichier pour la Cartographie
/** Constante stockant le chemin d'accès et le nom du fichier récupérant l'image de la carte et la renvoyant au client.*/
define('CAR_CHEMIN_CARTE', ECHORO_CHEMIN_BIBLIO_CARTO.'carto.php?session_name='.session_name().ini_get('arg_separator.output').'session_id='.session_id());
/** Constante stockant le chemin d'accès et le nom du fichier récupérant l'image de la carte et la renvoyant au client.*/
define('CAR_CHEMIN_TMP', ECHORO_CHEMIN_ABSO_BIBLIO_CARTO.'cartes_tmp/');
 
// +------------------------------------------------------------------------------------------------------+
// Définition de la langue
/** Constante stockant la langue utilisée pour l'application.*/
define('ECHORO_LANGUE', substr($GLOBALS['_GEN_commun']['i18n'], 0, 2));
 
/** Constantes liées à l'utilisation des url*/
//define('BASE_URL', 'http://'.$_SERVER["HTTP_HOST"].'/');//URL de base. Exemple: http://www.tela-botanica.org/
//define('URL_DOCUMENT','document.php?project='.$GS_GLOBAL['project'].'&amp;locale='.$GS_GLOBAL['locale'].'&amp;doc='.$GS_GLOBAL['document_row']->D_NAME.'&amp;page='.$GS_GLOBAL['current_page_ndx']);//l'url de base de l'apllication
 
/** Constantes liées à l'utilisation de la carto */
define('ID_CARTE_FR_DPT', 'france');//Identifiant de la carte des départements français
define('ID_ZONE_GEO_CARTE_FR_DPT', 'fr');//Identifiant de la zone géographique qui correspond à la carte des départements français
define('NOM_CARTE_FR_DPT', 'France');//Identifiant de la carte des départements français
 
/** Constantes définissants les couleurs minimum, medium et maximum des cartes */
define('COULEUR_ZERO_R', 255);
define('COULEUR_ZERO_V', 255);
define('COULEUR_ZERO_B', 255);
define('COULEUR_MINI_R', 244);
define('COULEUR_MINI_V', 237);
define('COULEUR_MINI_B', 249);
define('COULEUR_MEDIUM_R', 208);
define('COULEUR_MEDIUM_V', 171);
define('COULEUR_MEDIUM_B', 225);
define('COULEUR_MAXI_R', 132);
define('COULEUR_MAXI_V', 4);
define('COULEUR_MAXI_B', 186);
 
/** Constantes définissants les paramétrages du fragmenteur de la recherche alphabétique. */
define('NBRE_LIGNE_PAGE_DEFAUT', 100);
define('NUMERO_LIGNE_DEPART', 0);
define('AFFICHER_TITRE', 0);
define('TITRE_FRAGMENTEUR', 'Sélectionner le nombre de taxons à afficher par page');
global $choro_dep_TABLEAU_CHOIX_LIGNE_PAGE;
$choro_dep_TABLEAU_CHOIX_LIGNE_PAGE = array(10,'Afficher les taxons par 10',20,'Afficher les taxons par 20',50,'Afficher les taxons par 50',100,'Afficher les taxons par 100', 200,'Afficher les taxons par 200');
define('MODELE_INFO', 'taxon');
define('CLASSE_CSS_TITRE', 'echoro_titre');
define('CLASSE_CSS_FRAGMENTEUR', 'nav_fragmenteur');
define('CLASSE_CSS_INFO', 'echoro_info');
 
/** Constantes de définition de style */
define('STYLE_GSITE', 1);//à 1 on utilise le la librairie de style GSITE à O, on doit inclure un fichier CSS dans l'entête
define('STYLE', 'eflore');//le nom du style à utiliser dans le fichier lib.putstyle.php
define('COULEUR_LIGNE', 'green');//la couleur utilisée pour les lignes paires de tableau html
 
/** Constantes de connexion aux bases de données MySQL */
//Il faut mettre dans la constante ci-dessous la même valeur que pour la constante
//BD_OFFICIEL si on ne veut pas mettre les tables de chorologie dans
//une base différente.
define('BD_BOTA','tela_prod_botanica');//Nom de la base des tables de chorologie
define('BD_GENERALE', 'tela_prod_v4');//Nom de la base des tables de la carto (et éventuellement de chorologie)
 
/** Constante de message d'erreur lors du débogage d'application */
define('STYLE_REQUETE', 'text-align: left; font-weight: bold; font-size: 26px;');//Le style du titre des messages d'erreur des requetes
define('ER_CONNECT', 'Impossible de se connecter &agrave; :'.ECHORO_BDD_SERVEUR.'.');//Le message d'erreur de connection
define('ER_SEL_BD_GENERALE', 'Impossible de s&eacute;lectionner la base '.BD_GENERALE.'.');//Le message d'erreur de sélection de BD_GENERALE
define('ER_SEL_BD_BOTA', 'Impossible de s&eacute;lectionner la base '.BD_BOTA.'.');//Le message d'erreur de sélection de BD_BOTA
 
/** Constantes des noms de champs de la table MySQL : carto_DEPARTEMENT_FR */
define('CD_BD_TABLE', BD_GENERALE.'.carto_DEPARTEMENT');
define('CD_NOM_TABLE', 'carto_DEPARTEMENT');
define('CD_ID', 'CD_ID_Departement');
define('CD_NOM', 'CD_Intitule_departement');
define('CD_R', 'CD_Couleur_R');
define('CD_V', 'CD_Couleur_V');
define('CD_B', 'CD_Couleur_B');
define('CD_PAYS', 'CD_ID_Pays');
 
/** Constantes des noms de champs de la table MySQL : carto_ACTION */
define('CA_BD_TABLE', BD_GENERALE.'.carto_ACTION');
define('CA_NOM_TABLE', 'carto_ACTION');
define('CA_PROJET', 'CA_ID_Projet_Carto');
define('CA_CARTE', 'CA_ID_Carte');
define('CA_ZG', 'CA_ID_Zone_geo');
define('CA_TYPE_ZG', 'CA_Type_zone');
define('CA_ACTION', 'CA_Action');
define('CA_CARTE_DESTINATION', 'CA_ID_Carte_destination');
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_CHOROLOGIE_DEPARTEMANTALE
//==================================================================================
*/
define("ECD_BD_TABLE", BD_BOTA.".EFLORE_CHOROLOGIE_DEPARTEMENTALE");
define("ECD_NOM_TABLE","EFLORE_CHOROLOGIE_DEPARTEMENTALE");
define("ECD_DEP","ECD_ID_Departement");
define("ECD_NUM_TAXO","ECD_ID_Numero_taxonomique");
define("ECD_NUM_NOMEN","ECD_ID_Numero_nomenclatural");
define("ECD_INDICE","ECD_ID_Indice_rarete");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_ANT_CHOROLOGIE
//==================================================================================
*/
define('EAC_BD_TABLE', BD_BOTA.'.EFLORE_ANT_CHOROLOGIE');
define('EAC_NOM_TABLE','EFLORE_ANT_CHOROLOGIE');
define('EAC_DEP','ECD_ID_Zone_geographique');
define('EAC_NUM_TAXO','ECD_ID_Numero_taxonomique');
define('EAC_NUM_NOMEN','ECD_ID_Numero_nomenclatural');
define('EAC_STATUT','ECD_ID_Statut');
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_REU_CHOROLOGIE
//==================================================================================
*/
define('ERC_BD_TABLE', BD_BOTA.'.EFLORE_REU_CHOROLOGIE');
define('ERC_NOM_TABLE','EFLORE_REU_CHOROLOGIE');
define('ERC_DEP','ECD_ID_Zone_geographique');
define('ERC_NUM_TAXO','ECD_ID_Numero_taxonomique');
define('ERC_NUM_NOMEN','ECD_ID_Numero_nomenclatural');
define('ERC_STATUT','ECD_ID_Statut');
 
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_CHOROLOGIE_STATUTS
//==================================================================================
*/
define("ECS_BD_TABLE", BD_BOTA.".EFLORE_CHOROLOGIE_STATUTS");
define("ECS_NOM_TABLE","EFLORE_CHOROLOGIE_STATUTS");
define("ECS_ID","ECS_ID_Statut");
define("ECS_INTITULE","ECS_Intitule_statut");
define("ECS_ABREV","ECS_Abreviation_statut");
define("ECS_DESCRIPTION","ECS_Description_statut");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_CHOROLOGIE_CORRESPONDANTS
//==================================================================================
*/
define("ECC_BD_TABLE", BD_BOTA.".EFLORE_CHOROLOGIE_CORRESPONDANTS");
define("ECC_NOM_TABLE","EFLORE_CHOROLOGIE_CORRESPONDANTS");
define("ECC_ID","ECC_ID_Correspondant");
define("ECC_PRENOM","ECC_Prenom_correspondant");
define("ECC_NOM","ECC_Nom_correspondant");
define("ECC_COURRIEL","ECC_Courriel_correspondant");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_CHOROLOGIE_DEP_CORRES
//==================================================================================
*/
define("ECDC_BD_TABLE", BD_BOTA.".EFLORE_CHOROLOGIE_DEP_CORRES");
define("ECDC_NOM_TABLE","EFLORE_CHOROLOGIE_DEP_CORRES");
define("ECDC_DEP","ECDC_ID_Departement");
define("ECDC_CORRES","ECDC_ID_Correspondant");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_CHOROLOGIE_DEP_SOURCES
//==================================================================================
*/
define("ECDS_BD_TABLE", BD_BOTA.".EFLORE_CHOROLOGIE_DEP_SOURCE");
define("ECDS_NOM_TABLE","EFLORE_CHOROLOGIE_DEP_SOURCE");
define("ECDS_DEP","ECDS_ID_Departement");
define("ECDS_SOURCE","ECDS_ID_Source_biblio");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_CHOROLOGIE_SOURCES
//==================================================================================
*/
define("ECSO_BD_TABLE", BD_BOTA.".EFLORE_CHOROLOGIE_SOURCES");
define("ECSO_NOM_TABLE","EFLORE_CHOROLOGIE_SOURCES");
define("ECSO_ID","ECSO_ID_Source_biblio");
define("ECSO_REF","ECSO_Reference_biblio");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_ZG_DEPARTEMENTS
//==================================================================================
*/
define("EZD_BD_TABLE", BD_BOTA.".EFLORE_ZG_DEPARTEMENTS");
define("EZD_NOM_TABLE","EFLORE_ZG_DEPARTEMENTS");
define("EZD_ID","EZD_ID_Departement");
define("EZD_NOM","EZD_Nom_departement");
define("EZD_REG","EZD_ID_Region");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_NOMS_TAXONS
//==================================================================================
*/
define("ENT_BD_TABLE", BD_BOTA.".EFLORE_NOMS_TAXONS");
define("ENT_NOM_TABLE","EFLORE_NOMS_TAXONS");
define("ENT_NUM_TAXO","Num_taxonomique");
define("ENT_NUM_NOMEN","Num_nomenclatural");
define("ENT_NOM","Nom");
define("ENT_NOM_AUTEUR","Auteur");
define("ENT_TYPE_SUB_SP","Type_ss_espece");
define("ENT_NOM_SUB_SP","Nom_ss_espece");
define("ENT_AUTEUR_SUB_SP","Auteur_ss_espece");
define("ENT_TYPE_INFRA_2","Type_infra_2");
define("ENT_NOM_INFRA_2","Nom_infra_2");
define("ENT_AUTEUR_INFRA_2","Auteur_infra_2");
define("ENT_TYPE_INFRA_3","Type_infra_3");
define("ENT_NOM_INFRA_3","Nom_infra_3");
define("ENT_AUTEUR_INFRA_3","Auteur_infra_3");
define("ENT_ANNEE","Annee");
define("ENT_NOM_COMPLET","Nom_complet");
define("ENT_NOM_COMPLET_01","Nom_complet_01");
define("ENT_NOM_COMPLET_02","Nom_complet_02");
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_ANT_NOMS_TAXONS
//==================================================================================
*/
define('EANT_BD_TABLE', BD_BOTA.'.EFLORE_ANT_NOMS_TAXONS');
define('EANT_NOM_TABLE','EFLORE_ANT_NOMS_TAXONS');
//Pour les noms de champs utiliser ceux de la table EFLORE_NOMS_TAXONS
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_REU_NOMS_TAXONS
//==================================================================================
*/
define('ERNT_BD_TABLE', BD_BOTA.'.EFLORE_REU_NOMS_TAXONS');
define('ERNT_NOM_TABLE','EFLORE_REU_NOMS_TAXONS');
//Pour les noms de champs utiliser ceux de la table EFLORE_NOMS_TAXONS
 
/**
//==================================== CONSTANTES ==================================
* Constantes des noms de champs de la table MySQL EFLORE_REU_CHOROLOGIE_STATUTS
//==================================================================================
*/
define("ERCS_BD_TABLE", BD_BOTA.".EFLORE_REU_CHOROLOGIE_STATUTS");
define("ERCS_NOM_TABLE","EFLORE_REU_CHOROLOGIE_STATUTS");
//Pour les noms de champs utiliser ceux de la table EFLORE_CHOROLOGIE_STATUTS
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.6 2005/05/19 07:37:47 jpm
* Correction des bogues et derniers réglages avant mise en ligne du site v4.
*
* Revision 1.5 2005/03/15 15:10:32 jpm
* Ajout du chemin vers l'API formulaire.
*
* Revision 1.4 2005/02/28 15:37:08 jpm
* Changement de nom de dossier d'API.
*
* Revision 1.3 2005/02/23 17:30:14 jpm
* Modification de valeurs de constantes.
*
* Revision 1.2 2005/02/22 19:36:55 jpm
* Ajout de constantes de configuration.
*
* Revision 1.1 2005/02/22 12:02:41 jpm
* Ajout des fichiers de configuration de l'application.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/echoro_encodage.fonct.php
New file
0,0 → 1,78
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-Chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro_encodage.fonct.php,v 1.2 2005-05-19 07:37:47 jpm Exp $
/**
* Fonctions manipulant les encodages
*
* Fichiers contenant des fonctions manipulant l'encodage.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-05-19 07:37:47 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE DES FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/**
* La fonction remplaceEntiteHTLM() remplace des caractères par les entités html.
*
* Cette fonction retourne un texte dans lequel touts les caractères correspondant
* à des entités html sont remplacés par la valeur de l'entité, à l'exception
* des caractères <, >, & et ".
* Cela permet de remplacer toutes les entités dans une chaine contenant du html.
*
*@param string la chaîne html à parsser.
*@return string contient la chaîne html avec les entités intégrées.
*/
 
function remplaceEntiteHTLM($texte)
{
$texte_retour = '';
$tab_entites = get_html_translation_table(HTML_ENTITIES);
unset($tab_entites['"']);
unset($tab_entites['<']);
unset($tab_entites['>']);
unset($tab_entites['&']);
$tab_entites[' & '] = ' &amp; ';
return strtr($texte, $tab_entites);
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/22 12:03:14 jpm
* Ajout des fichiers de la bibliothèque de l'application.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/echoro_information.fonct.php
New file
0,0 → 1,195
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of MON_PROGRAMME. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro_information.fonct.php,v 1.2 2005-02-22 16:35:40 jpm Exp $
/**
* Contient des fonctions fournissant des informations issues de la base de données.
*
* Ces fonctions PHP permettent de récupérer des données de la base de données et de les formater.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-02-22 16:35:40 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
 
/**
* Fonction echoro_recupererNomDepartement() - renvoie le nom d'un département.
*
* Cette fonction retourne une chaîne correspondant au nom d'un département en
* fonction du numéro du département passé en paramètre.
* Le code source de la fonction :
* {@source}
*
* @param int l'identifiant d'un département.
* @return string le nom du département.
*/
function echoro_recupererNomDepartement($num_departement)
{
$requete =
'SELECT '.EZD_NOM.
' FROM '.EZD_BD_TABLE.
' WHERE '.EZD_ID.' = '.$num_departement;
$resultat = mysql_query ($requete) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_array ($resultat);
$nom_departement = $ligne[EZD_NOM];
return $nom_departement;
}
 
/**
* Fonction echoro_possederCourriel() - renvoie un lien vers le courriel.
*
* Cette fonction retourne une chaîne correspondant à l'adresse de courriel passée
* en paramêtre avec un lien mailto si l'adresse posséde une @.
* Exemple de retour : <a href="mailto:adresse_couriel">adresse_couriel</a>
*
* Le tableau associatif des atributs du lien:
* - clé "class": permet d'attribuer une classe au lien.
* - clé "title": permet d'attribuer une aide (bulle) lors du passage de la souris sur le lien.
*
* Le code source dela fonction :
* {@source}
*
* @param string l'adresse de courriel.
* @param array un tableau associatif des attributs de la balise <a>.
* @return string l'adresse de courriel avec lien ou pas.
*/
function echoro_possederCourriel($courriel, $tablo_formatLien = array())
{
$retour = '';//Initialisation de la variable retournée.
if (!ereg("[@]", $courriel)){//Nous traitons le cas où le correspondant n'a pas de courriel.
$retour = $courriel;
}
else{//Le cas où le correspondant a un courriel.
//Nous testons l'existence de valeur pour les attributs class et title et
//nous attribuons éventuellement des valeurs par défaut.
isset($tablo_formatLien['class'])?'':$tablo_formatLien['class']='';
isset($tablo_formatLien['title'])?'':$tablo_formatLien['title']='Cliquer pour écrire un message';
$retour = '<a class="'.$tablo_formatLien['class'].'" title="'.$tablo_formatLien['title'].'" href="mailto:'.$courriel.'">'.$courriel.'</a>';
}
return $retour;
}
 
/**
* Fonction echoro_recupererInfoDep() - donne toutes les infos choro sur un département.
*
* Cette fonction retourne un tableau associatif contenant toutes les infos sur
* un département.
* Les clés de ce tableau ont pour valeur:
* - NUMERO : entier - numéro du département.
* - NOM : chaine - nom du département
* - SOURCES : tableau - sources bibliographique
* - CORRESPONDANTS : tableau de tableaux associatifs - correspodants départementaux
* Les clés des tableaux associatifs sont:
* -PRENOM : une chaîne
* -NOM : une chaîne mise en majuscule
* -COURRIEL : l'adresse de courriel.
* Le code source de la fonction :
* {@source}
*
* @param int le numéro du département.
* @return array tableau associatif contenant toutes les infos sur le département.
*/
function echoro_recupererInfoDep($num_departement)
{
$tableau_retour = '';
$tableau_source = '';
$tableau_corres = '';
$tableau_retour{'NUMERO'} = $num_departement;
$tableau_retour{'NOM'} = echoro_recupererNomDepartement($num_departement);
$requete_01 =
'SELECT '.ECSO_REF.
' FROM '.ECDS_BD_TABLE.','.ECSO_BD_TABLE.
' WHERE '.ECDS_DEP.' = '.$num_departement.
' AND '.ECDS_SOURCE.' = '. ECSO_ID;
$resultat_01 = mysql_query ($requete_01) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_01.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$i=0;
$tableau_source[0] = 'Aucune';//Initialisation du tableau
while($ligne_01 = mysql_fetch_array ($resultat_01)){
$tableau_source[$i] =$ligne_01[ECSO_REF];
$i++;
}
$tableau_retour{'SOURCES'} = $tableau_source;
 
$requete_02 =
'SELECT '.ECC_PRENOM.', '.ECC_NOM.', '.ECC_COURRIEL.
' FROM '.ECC_BD_TABLE.','.ECDC_BD_TABLE.
' WHERE '.ECDC_DEP.' = '.$num_departement.
' AND '.ECDC_CORRES.' = '. ECC_ID;
$resultat_02 = mysql_query ($requete_02) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_02.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$i=0;
$tableau_corres{'PRENOM'} = '';//Initialisation du tableau
$tableau_corres{'NOM'} = 'Aucun';//Initialisation du tableau
$tableau_corres{'COURRIEL'} = '';//Initialisation du tableau
$tableau_corres_tous[0] = $tableau_corres;//Initialisation du tableau
while($ligne_02=mysql_fetch_array ($resultat_02)){
$tableau_corres{'PRENOM'} = $ligne_02[ECC_PRENOM];
$tableau_corres{'NOM'} = strtoupper($ligne_02[ECC_NOM]);
$tableau_corres{'COURRIEL'} = $ligne_02[ECC_COURRIEL];
$tableau_corres_tous[$i] = $tableau_corres;
$i++;
}
$tableau_retour{'CORRESPONDANTS'} = $tableau_corres_tous;
return $tableau_retour;
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/22 12:03:14 jpm
* Ajout des fichiers de la bibliothèque de l'application.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/echoro_affichage_xhtml.fonct.php
New file
0,0 → 1,296
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro_affichage_xhtml.fonct.php,v 1.9 2006-09-07 16:01:17 jp_milcent Exp $
/**
* Fichier permettant d'inclure les données dans du XHTML.
*
* Fichier contenant des fonctions retournant du XHTML une fois les données passées en paramêtre incluse à l 'intérieur.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.9 $ $Date: 2006-09-07 16:01:17 $
// +------------------------------------------------------------------------------------------------------+
*/
 
/**
* Gestion des messages d'alerte.
*
*Cette fonction retourne un message d'alerte en XHTML.
*
* @param string le type de message d'alerte à retourner.
* @return string contient le message d'alerte en XHTML.
*/
function message_alerte($type_message){
$message_renvoyer='';
switch ($type_message){
case '01' :
$message_renvoyer =
inclusion_html('debut_ligne_alerte').
'Pas de taxon commençant par cette lettre dans ce département !'.
inclusion_html('fin_ligne_alerte');
break;
case '02' :
$message_renvoyer =
inclusion_html('debut_ligne_alerte').
'Aucune liste disponible pour l\'instant dans ce département !'.
inclusion_html('fin_ligne_alerte');
break;
case '03' :
$message_renvoyer =
inclusion_html('debut_ligne_alerte').
'Veuillez précisez le format pour l\'export !'.
inclusion_html('fin_ligne_alerte');
break;
}//fin du switch
$message_renvoyer = remplaceEntiteHTLM($message_renvoyer);
return $message_renvoyer;
}
 
/**
* Gestion des inclusions XHTML dans le code PHP.
*
* Cette fonction retourne du XHTML à insérer dans le code PHP.
*
* @param string le type d'inclusion de XHTML à retourner.
* @param array le tableau des paramêtre à inclure dans le XHTML à retourner.
* @return string contient du XHTML à insérer dans le code PHP.
*/
function inclusion_html($type_inclusion, $variable = array())
{
$html_renvoyer='';
switch ($type_inclusion){
//----------------------------- LES TITRES -----------------------------
case 'titre_liste' :
$html_renvoyer = '<h1>Département : '.$variable[0].' ( '.$variable[1].' taxons )</h1>'."\n";
break;
case 'titre_carte' :
$html_renvoyer = '<h1>'.$variable[0].' départements possédant une liste de plantes en cours d\'élaboration</h1>'."\n";
break;
case 'titre_contrib' :
$html_renvoyer = '<h1>Les contributeurs départementaux</h1>'."\n";
break;
case 'titre_sources' :
$html_renvoyer = '<h1>Les sources bibliographiques</h1>'."\n";
break;
case 'titre_avertir' :
$html_renvoyer = '<h1>Avertissement concernant le projet chorologie départementale</h1>'."\n";
break;
//----------------------------- LES OUVERTURES DE TABLEAUX -----------------------------
case 'tab_ouvre' :
$html_renvoyer = '<table>'."\n";
break;
case 'tab_ouvre_liste_taxon' :
if ($variable[0] == 'tous') {
$html_renvoyer = '<h2>Affichage de tous les taxons du département</h2>';
} else {
$html_renvoyer = '<h2>Affichage des taxons commençant par la lettre : '.$variable[0].'</h2>';
}
$html_renvoyer .='<table id="echoro_resultat">
<colgroup>
<col class="echoro_colonne_01" />
<col class="echoro_colonne_02" />
</colgroup>
<thead>
<tr class="echoro_ligne_entete_01">
<th>Nom du taxon</th>
<th>Indice</th>
</tr>
<tr class="echoro_ligne_entete_02">
<th>
<img id="echoro_info_01" '.
'src="'.ECHORO_CHEMIN_IMAGE.'info.png'.'" '.
'title=" En cliquant sur le nom d\'un taxon, vous accédez à sa fiche nomenclaturale.'.
'Nombre vert : numéro nomenclatural. Nombre unique attribué à chaque nom. '.
'Nombre rouge : numéro taxonomique. Tous les noms appartenant à un même taxon possédent le même numéro taxonomique." '.
'alt=" En cliquant sur le nom d\'un taxon, vous accédez à sa fiche nomenclaturale. '.
'Nombre vert : numéro nomenclatural. Nombre unique attribué à chaque nom. '.
'Nombre rouge : numéro taxonomique. Tous les noms appartenant à un même taxon possédent le même numéro taxonomique." '.
'onmouseover="AffBulle(\'En cliquant sur le nom d\\\'un taxon, vous accédez à sa fiche nomenclaturale. '.
'<br />Nombre vert : numéro nomenclatural. Nombre unique attribué à chaque nom. <br />'.
'Nombre rouge : numéro taxonomique. Tous les noms appartenant à un même taxon possédent le même numéro taxonomique.\')" '.
'onmouseout="HideBulle()" />
</th>
<th>
<img id="echoro_info_02" '.
'src="'.ECHORO_CHEMIN_IMAGE.'info.png'.'" '.
'title="Indice de rareté : information sur la présence de l\'espèce dans le département." '.
'alt="Indice de rareté : information sur la présence de l\'espèce dans le département." '.
'onmouseover="AffBulle(\'Indice de rareté : information sur la présence de l\\\'espèce dans le département.\')" '.
'onmouseout="HideBulle()" />
</th>
</tr>
</thead>
<tbody>';
break;
//----------------------------- LES FERMETURES DE TABLEAUX -----------------------------
case 'tab_evol_ferme' :
$html_renvoyer ='</tbody>'."\n".'</table>'."\n";
break;
case 'tab_ferme' :
$html_renvoyer = '</table>'."\n";
break;
//----------------------------- LES OUVERTURES DE LIGNES DE TABLEAUX -----------------------------
case 'debut_ligne_alerte' :
$html_renvoyer ='<p class="echoro_avertissement">'."\n";
break;
//----------------------------- LES FIN DE LIGNES DE TABLEAUX -----------------------------
case 'fin_ligne_alerte' :
$html_renvoyer ='</p>'."\n";
break;
//----------------------------- LES TEXTES DANS TABLEAUX -----------------------------
case 'avertissement_carte' :
$html_renvoyer =
'<p>'."\n".
'Cliquez sur une zone colorée de la carte pour afficher la liste des taxons.<br />'."\n".
'La couleur est proportionnelle au nombre de taxons.'."\n".
'</p>'."\n".
'<h2>Avertissement : </h2>'."\n".
'<p>'."\n".
'Les informations fournies par cette application ne peuvent pas être considérées comme des références.<br />'."\n".
'Ce sont des documents en cours d\'élaboration.<br />'."\n".
'</p>'."\n";
break;
case 'info_dep' :
$html_renvoyer = '<h1>Informations sur le département : </h1>'."\n";
// Gestion des contributeurs d'un département
$nbre_contrib = count($variable[1]);
if ($nbre_contrib >= 1) {
$html_renvoyer .= '<h2>Contributeurs : </h2>'."\n";
} else {
$html_renvoyer .= '<h2>Contributeur : </h2>'."\n";
}
$html_renvoyer .= '<ul>'."\n";
for ($i = 0; $i < $nbre_contrib; $i++){
if(ereg("[@]", $variable[1][$i]['COURRIEL'])){
$html_renvoyer .=
'<li>'.
'<a class="echoro_lien" href="mailto:'.$variable[1][$i]['COURRIEL'].'">'.$variable[1][$i]['PRENOM'].' '.$variable[1][$i]['NOM'].'</a>'.
'</li>';
} else {
$html_renvoyer .= '<li>'.$variable[1][$i]['PRENOM'].' '.$variable[1][$i]['NOM'].'</li>';
}
}
$html_renvoyer .= '</ul>'."\n";
// Gestion des sources d'un département
$nbre_source = count($variable[0]);
if ($nbre_source >= 1) {
$html_renvoyer .= '<h2>Sources : </h2>'."\n";
} else {
$html_renvoyer .= '<h2>Source : </h2>'."\n";
}
$html_renvoyer .= '<ul>'."\n";
for($i = 0; $i < $nbre_source; $i++){
$html_renvoyer .= '<li>'.$variable[0][$i].'</li>';
}
$html_renvoyer .= '</ul>';
 
// Gestion de l'export
if ($GLOBALS['export_bool']) {
$html_renvoyer .= '<h2>Télécharger les données : </h2>'."\n";
$url_export = clone $GLOBALS['_ECHORO_']['url'];
$url_export->addQueryString('lettre', $GLOBALS['lettre']);
$url_export->addQueryString('departement', $GLOBALS['departement']);
$url_export->addQueryString('nombre_taxon', $GLOBALS['nombre_taxon']);
$url_export->addQueryString('action', 'export');
$url_export->addQueryString('format', 'xls');
if ($GLOBALS['lettre'] != 'tous') {
$html_renvoyer .= '<p><a href="'.$url_export->getURL().'">Export au format excel des taxons du département commençant par la lettre '.$GLOBALS['lettre'].'.</a></p>';
} else {
$html_renvoyer .= '<p><a href="'.$url_export->getURL().'">Export au format excel de tous les taxons du département.</a></p>';
}
}
// Gestion du titre de la navigation
$html_renvoyer .= '<h2>Recherche et navigation dans les résultats : </h2>'."\n";
break;
case 'intro_contrib' :
$html_renvoyer = '<h1>Dans quel but joindre les contributeurs ?</h1>'.
'<p>'."\n".
'Il est utile d\'informer les contributeurs départementaux lorsque vous constatez des erreurs dans les listes.<br />'."\n".
'Ce ne sont que des listes de travail qui sont donc incomplètes ou qui peuvent indiquer des taxons disparus.<br />'."\n".
'C\'est pour améliorer la qualité de ces listes et en faire profiter tous les membres du réseau que nous comptons sur votre participation.<br /><br />.'."\n".
'La coordination du projet et l\'intégration des données sont assurées par <a href="mailto:philippe.julve@wanadoo.fr" class="eflore_lien">Philippe JULVE</a>'."\n".
'</p>'."\n";
break;
//----------------------------- LES PIEDS DE PAGES -----------------------------
case 'pied_page' :
$html_renvoyer = '<p class="echoro_pied_page">'."\n".
'Si vous constatez des problèmes ou des insuffisances en utilisant cette application, veuillez contacter :'."\n".
'<a href="mailto:jpm@tela-botanica.org">Jean-Pascal MILCENT</a>'."\n".
'</p>'."\n";
break;
}//fin du switch
$html_renvoyer = remplaceEntiteHTLM($html_renvoyer);
return $html_renvoyer;
}//fin fonction inclusion_html
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.8 2006/05/31 15:20:04 jp_milcent
* Suppression de commentaires.
*
* Revision 1.7 2006/05/31 15:19:12 jp_milcent
* Simplification de l'url pour l'export.
*
* Revision 1.6 2006/05/31 15:11:29 jp_milcent
* Amélioration de la gestion de l'export xls.
*
* Revision 1.5 2006/05/31 14:43:35 jp_milcent
* Correction de la gestion des sessions pour l'affichage de la carte.
* Ajout de l'export au format xls.
*
* Revision 1.4 2005/05/31 13:45:22 jpm
* Correction erreur xhtml.
*
* Revision 1.3 2005/02/23 17:29:57 jpm
* Amélioration du code html.
*
* Revision 1.2 2005/02/22 19:36:28 jpm
* Suppression de code html superflu.
* Mise en conformité avec la convention de codage.
*
* Revision 1.1 2005/02/22 12:03:14 jpm
* Ajout des fichiers de la bibliothèque de l'application.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/cartographie/carto.php
New file
0,0 → 1,100
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Cartographie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: carto.php,v 1.4 2006-05-31 14:43:35 jp_milcent Exp $
/**
* Fournie une image cartographique.
*
* Fichier permettant de récupérer l'image d'une carte créer par la bibliothèque cartographique
* et de la faire passer dans les entête HTTP.
*
*@package Cartographie
//Auteur original :
*@author Nicolas MATHIEU
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.4 $ $Date: 2006-05-31 14:43:35 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
session_name($_GET['session_name']);
session_id($_GET['session_id']);
session_start();
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
$image = imagecreatefrompng($_SESSION['chemin'].$_SESSION['fichier'].'.png');
if (!$image) {
echo '<pre>';
echo session_name()."\n";
echo session_id()."\n";
echo $_SESSION['chemin'].$_SESSION['fichier'].'.png'."\n";
echo '</pre>';
trigger_error($image);
} else {
header("Expires: Wen, 01 Dec 1999 01:00:00 GMT");// Date du passé
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");// toujours modifié
header("Cache-Control: no-cache, must-revalidate");// HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
header ("content-type:image/png");
chmod($_SESSION['chemin'].$_SESSION['fichier'].'.png', 755);
imagepng($image);
unlink($_SESSION['chemin'].$_SESSION['fichier'].'.png');
//Nous nettoyons le dossier tmp des fichiers qu'il contient:
$poignet_de_dossier = opendir($_SESSION['chemin']);
while ($fichier_dechet = readdir($poignet_de_dossier)) {
if ($fichier_dechet != '.' && $fichier_dechet != '..') {
unlink($_SESSION['chemin'].$fichier_dechet);
}
}
closedir($poignet_de_dossier);
}
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
exit();
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.3 2005/02/22 19:35:08 jpm
* Fin de gestion des variables via les sessions.
*
* Revision 1.2 2005/02/22 16:35:16 jpm
* Mise en forme.
* Utilisation de constantes pour les chemins d'accès aux fichiers.
* Ajout de commentaires.
*
* Revision 1.1 2005/02/22 12:02:57 jpm
* Ajout des fichiers de la bibliothèque cartographique.
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/cartographie/carto_historique.class.php
New file
0,0 → 1,131
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 5.0.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Cartographie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: carto_historique.class.php,v 1.2 2005-02-22 16:35:16 jpm Exp $
/**
* Classe Carto_Historique.
*
* Classe permettant de réaliser des cartes.
*
*@package Cartographie
//Auteur original :
*@author Nicolas MATHIEU
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-02-22 16:35:16 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
/**
* Classe Carto_Historique() - Affiche les liens avec les carte précédentes.
*
* La classe Carto_Historique sert à pouvoir afficher les liens avec les carte précédentes
* On accède à cette fonctionnalité grâce à la méthode afficherHistoriqueCarte()
* L'objet Carto_HistoriqueCarte recoit en parametres :
* - la généalogie du niveau ou on en est (du type monde*europe*france )
* - l'url du document
* - en option : - le caractere de separation (par defaut c'est >)
* - la classe css des liens
*/
class Carto_Historique
{
// +--------------------------------------------------------------------------------------------------+
// LES ATTRIBUTS DE LA CLASSE
var $historique;
var $url;
var $caractere_separation;
var $class_css;
var $nom;
// +--------------------------------------------------------------------------------------------------+
// LE CONSTRUCTEUR DE LA CLASSE
/**
* Constructeur Carto_Historique()
*
* Constructeur initialisant les attributs de la classe Carto_Historique().
*/
function Carto_Historique($objet_carte, $caractere = '&gt;', $class = '')
{
$this->historique = $objet_carte->historique;
$this->url = $objet_carte->url;
$this->nom = $objet_carte->nom;
unset ($objet_carte);
$this->caractere_separation = $caractere;
$this->class_css = $class;
}//Fin du constructeur Carto_Historique().
// +--------------------------------------------------------------------------------------------------+
// LES METHODES PUBLIQUES
function afficherHistoriqueCarte()
{
$res='';
$tabonglet = explode ('*', $this->historique);
$tabnom = explode ('*', $this->nom);
foreach ($tabonglet as $key=>$value) {
if ($key == 0) {
$chemin = $value;
}
else {
$chemin .= '*'.$value;
}
$res.= '<a ';
if (!empty($this->class_css)) {
$res.='class="'.$this->class_css.'" ';
}
$res.='href="'.$this->url.'&amp;historique_cartes='.$chemin.'">&nbsp;'.$this->caractere_separation.'&nbsp;'.$tabnom[$key].'</a>';
}
return $res;
}//Fin de la méthode afficherHistoriqueCarte().
 
}//Fin de la classe Carto_Historique.
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/22 12:02:57 jpm
* Ajout des fichiers de la bibliothèque cartographique.
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/cartographie/carto_action.class.php
New file
0,0 → 1,210
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Cartographie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: carto_action.class.php,v 1.2 2005-02-22 16:35:16 jpm Exp $
/**
* Classe ActionCarte.
*
* Calsse permettant de connaître les actions à réaliser sur une carte.
*
*@package Cartographie
//Auteur original :
*@author Nicolas MATHIEU
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-02-22 16:35:16 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
/**
* Classe Carto_Action() - Recueille les infos sur l'action à réaliser pour une zone géo donnée.
*
* La classe Carto_Action sert a definir les paramètres nécessaires pour recueillir l'action a réaliser en
* fonction des coordonnées du point, du masque et du niveau.
* Elle remplace la fonction get_cartoAction() que l'on peut trouver dans le fichier carto_commun.php
* des différentes application utilisant la carto.
* Les champs a renseigner sont les suivants :
* -le nom de la table ($nom_table_carto_action) où sont stokée les actions à réalisées
* en fonction des couleurs
* -les 5 champs principaux de la table :
* -l'identifiant de la zone géographique (un nom, un numéro ou une abréviation) -> $nom_champ_cle
* -les couleurs -> $nom_champ_rouge, $nom_champ_vert, $nom_champ_bleu
* -l'action -> $nom_champ_action
* Elle possède une seule méthode : get_cartoAction().
*/
class Carto_Action
{
// +--------------------------------------------------------------------------------------------------+
// LES ATTRIBUTS DE LA CLASSE
var $_table_zone_geo;
var $_id_zone_geo_zone;
var $_rouge;
var $_vert;
var $_bleu;
var $_table_action;
var $_id_carte_action;
var $_id_zone_geo_action;
var $_type_zone_geo_action;
var $_action;
var $_id_carte_destination;
// +--------------------------------------------------------------------------------------------------+
// LE CONSTRUCTEUR DE LA CLASSE
/**
* Constructeur Carto_Action()
*
* Constructeur initialisant les attributs de la classe Carto_Action().
*/
function Carto_Action($info_table_zone_geo, $info_table_action)
{
$this->_table_zone_geo = $info_table_zone_geo['nom_table_zone'];
$this->_id_zone_geo_zone = $info_table_zone_geo['nom_chp_id_zone'];
$this->_rouge = $info_table_zone_geo['nom_chp_rouge'];
$this->_vert = $info_table_zone_geo['nom_chp_vert'];
$this->_bleu = $info_table_zone_geo['nom_chp_bleu'];
$this->_table_action = $info_table_action['nom_table_action'];
$this->_id_carte_action = $info_table_action['nom_chp_id_carte'];
$this->_id_zone_geo_action = $info_table_action['nom_chp_id_zg_action'];
$this->_type_zone_geo_action = $info_table_action['nom_chp_type_zg'];
$this->_action = $info_table_action['nom_chp_action'];
$this->_id_carte_destination = $info_table_action['nom_chp_id_carte_destination'];
}
// +--------------------------------------------------------------------------------------------------+
// LES METHODES PRIVÉES
/**
* Méthode _consulterActionImage($imageX, $imageY, $masque, $id_carte)
*
* Elle renvoit l'action a réaliser.
* Nous passons les paramètres suivant :
* -les coordonnees du point ($imageX et $imageY)
* -le masque pour recuperer la couleur ($masque)
* -l'identifiant de la carte où nous nous trouvons ($id_carte)
*/
function _consulterActionImage($imageX, $imageY, $masque, $id_carte)
{
// Nous récuperons les valeurs RVB de la couleur sur laquelle l'utilisateur a cliqué.
// Les valeurs RVB sont stockées dans le tableau associatif $valeurs_RVB.
$masque_courant = imagecreatefrompng($masque);
$index_couleur = imagecolorat($masque_courant,$imageX,$imageY);
$valeurs_RVB = imagecolorsforindex($masque_courant, $index_couleur);
// Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
// du champ "action", afin de savoir quoi faire.
$requete =
'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
' WHERE '.$this->_table_zone_geo.'.'.$this->_rouge.' = '.$valeurs_RVB['red'].
' AND '.$this->_table_zone_geo.'.'.$this->_vert.' = '.$valeurs_RVB['green'].
' AND '.$this->_table_zone_geo.'.'.$this->_bleu.' = '.$valeurs_RVB['blue'].
' AND '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
$resultat=mysql_query($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
if (mysql_num_rows ($resultat) != 0) {
$chp_id_zone_geo = $this->_id_zone_geo_action;
$chp_action = $this->_action;
$chp_id_carte_destination = $this->_id_carte_destination;
$action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
$action['type_action'] = $ligne->$chp_action;
$action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
return $action;
}
}//Fin de la méthode _consulterActionImage().
/**
* Méthode _consulterActionListe($id_zone_carte, $id_carte)
*
* Elle renvoit l'action a réaliser.
* Nous passons les paramètres suivant :
* -l'identifiant de la zone que l'on veut afficher
* -l'identifiant de la carte où nous nous trouvons ($id_carte)
*/
function _consulterActionListe($id_zone_carte, $id_carte)
{
// Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
// du champ "action", afin de savoir quoi faire.
$requete =
'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
' WHERE '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
' AND '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.' = "'.$id_zone_carte.'"'.
' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
$resultat=mysql_query($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$ligne = mysql_fetch_object ($resultat);
if (mysql_num_rows ($resultat) != 0) {
$chp_id_zone_geo = $this->_id_zone_geo_action;
$chp_action = $this->_action;
$chp_id_carte_destination = $this->_id_carte_destination;
$action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
$action['type_action'] = $ligne->$chp_action;
$action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
return $action;
}
}//Fin de la méthode get_cartoAction().
}//Fin de la classe Carto_Action.
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/22 12:02:57 jpm
* Ajout des fichiers de la bibliothèque cartographique.
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/cartographie/carto_carte.class.php
New file
0,0 → 1,821
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Cartographie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: carto_carte.class.php,v 1.6 2007-01-08 11:41:13 jp_milcent Exp $
/**
* Classe Carto_Carte.
*
* Calsse permettant de réaliser des cartes.
*
*@package Cartographie
//Auteur original :
*@author Nicolas MATHIEU
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.6 $ $Date: 2007-01-08 11:41:13 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
require 'carto_action.class.php';
require 'carto_couleur.class.php';
require 'carto_historique.class.php';
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/**
* Classe Carto_Carte() - Classe principale de la cartographie.
*
* La classe Carto_Carte permet de travailler les fichiers images des cartes.
*/
class Carto_Carte
{
// +--------------------------------------------------------------------------------------------------+
// LES ATTRIBUTS DE LA CLASSE
var $id;
var $_id_zone_geo_carte;
var $nom;
var $masque;
var $fond;
var $chemin;
var $image;
var $fils;
var $url;
var $_info_table_zg;
var $filiation;
var $image_x;
var $image_y;
var $historique_cartes;
var $liste_zone_carte;
var $historique;
// La couleur dominante ( $maxiRVB ), la couleur la plus claire ($miniRVB) et la couleur
// intermédiaire précédant le maximum ( $mediumRVB ) au cas ou il y aurait un trop grand
//ecart entre les deux plus grandes valeurs.
var $_zeroR;
var $_zeroV;
var $_zeroB;
var $_miniR;
var $_miniV;
var $_miniB;
var $_mediumR;
var $_mediumV;
var $_mediumB;
var $_maxiR;
var $_maxiV;
var $_maxiB;
//Le type de formule mathématique permettant de colorier la carte
var $_formule_coloriage;
//L'action à réaliser
var $_action;
// +--------------------------------------------------------------------------------------------------+
// LE CONSTRUCTEUR DE LA CLASSE
function Carto_Carte($id, $id_zone_geo_carte, $nom, $masque, $fond, $chemin, $info_table_zg, $info_table_action)
{
$this->id = $id;
$this->_id_zone_geo_carte = $id_zone_geo_carte;
$this->nom = $nom;
$this->masque = $chemin.$masque;
$this->fond = $chemin.$fond;
$this->chemin = $chemin;
$this->_info_table_zg = $info_table_zg;
$this->_action = new Carto_Action($info_table_zg, $info_table_action);
$this->fils = array();
$this->filiation = $id;
$this->historique_cartes = '';
$this->liste_zone_carte = '';
$this->definirCouleurs();
$this->definirFormuleColoriage();
}
// +--------------------------------------------------------------------------------------------------+
// LES METHODES PUBLIQUES
function definirCouleurs (
$couleur_zero_R = '255', $couleur_zero_V = '255', $couleur_zero_B = '255',
$couleur_mini_R = '210', $couleur_mini_V = '230', $couleur_mini_B = '210',
$couleur_medium_R = '92', $couleur_medium_V = '181', $couleur_medium_B = '92',
$couleur_maxi_R = '0', $couleur_maxi_V = '127', $couleur_maxi_B = '0')
{
$this->_zeroR = $couleur_zero_R;
$this->_zeroV = $couleur_zero_V;
$this->_zeroB = $couleur_zero_B;
$this->_miniR = $couleur_mini_R;
$this->_miniV = $couleur_mini_V;
$this->_miniB = $couleur_mini_B;
$this->_mediumR = $couleur_medium_R;
$this->_mediumV = $couleur_medium_V;
$this->_mediumB = $couleur_medium_B;
$this->_maxiR = $couleur_maxi_R;
$this->_maxiV = $couleur_maxi_V;
$this->_maxiB = $couleur_maxi_B;
}
function definirFormuleColoriage ($nomFormuleColoriage = 'defaut')
{
$this->_formule_coloriage = $nomFormuleColoriage;
}
//********************************************************************************************************
// La méthode donnerImageSimple ($objet) permet de récupérer une image non cliquable.
//*********************************************************************************************************
function donnerImageSimple($objet)
{
$nom_fichier_image = $this->_donnerIdUnique();
$objet->_lancerColoriage('', $nom_fichier_image);
$retour = '<img src="cartographie/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="Carte" />';
return $retour;
}
//********************************************************************************************************
// La methode ajouterFils() est essentielle. Elle permet d'ajouter toutes les sous cartes voulues.
// Il faut lui indiquer, comme a la carte du niveau du dessus, son nom, le masque, le fond et info_table_couleur.
// On a ainsi une inclusion d'objets les uns dans les autres.
//*********************************************************************************************************
function ajouterFils($id, $id_zone_geo_carte, $nom, $masque, $fond, $info_table)
{
$this->fils[$id] = new Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $this->chemin, $info_table);
//Si on ajoute à la carte du monde comme fils celle de l'europe, alors
//on aura comme valeur pour $this->filiation de la carte d'europe : monde*europe
$this->fils[$id]->filiation = $this->filiation.'*'.$id;
$this->fils[$id]->url = $this->url;
//Si on ajoute à la carte du monde dont le nom est 'Monde' comme fils celle de l'europe,
//dont le nom est 'Europe', alors on aura comme valeur pour $this->nom de la carte d'europe : Monde*Europe
$this->fils[$id]->nom = $this->nom.'*'.$nom;
$this->fils[$id]->historique_cartes = $this->historique_cartes;
}
//*********************************************************************************************************
// La methode donnerFormulaireImage() est la methode principale de la carto. C'est elle qui gere ce qu'il y a faire en
// fonction de l'action de l'utilisateur.
// Trois cas se distinguent :
// -soit l'utilisateur a clique sur un point de la carte.
// -soit il a clique sur un des liens que l'on a afficher avec la méthode afficherHistoriqueCarte de l'objet Carto_HistoriqueCarte.
// -soit il a sélectionné une zone géographique dans la liste déroulante.
// Elle renvoit a la fin:
// -soit une nouvelle carte coloriée
// -soit false.
//**********************************************************************************************************
function donnerFormulaireImage ()
{
//global $GS_GLOBAL;
$res = '';
// Nous commençons par tester tout d'abords si nous venons d'une autre carte. Pour cela nous vérifions,
// si les attributs $this->image_x et $this->image_y de la classe Carte existe ou ne sont pas null.
// La carte est une image appelée par une balise <input type="image"> et non par une balise classique <img>.
// Ansi, lorsqu'on clique sur la carte le formulaire appelle (via l'url du formulaire) l'application
// utilisant la classe carte et lui renvoit deux variables contenant les coordonnées x et y du clic.
// L'application instancie à nouveau les objets cartes mais cette fois ci la carte affichée dépendra des
// informations founit par une table de la base de données.
// La classe carto_action instanciée dans l'application utilisant la classe carte fournit les noms
// des champs et celui de la table contenant les valeur RVB de chaque zone des cartes, l'identifiant
// de la zone et l'action à entreprendre pour la zone conssidérée.
// La méthode imgform() utilise la méthode get_cartoAction() de l'objet Carto_Action pour connaître
// en fonction des coordonnées du clic l'action à entreprendre.
// Quoi qu'il arrive, on ouvre la balise formulaire
$res = '<form id="cartographie" action="'.$this->url.'" method="post">'."\n";
$res .= '<p>';
if (isset ($this->image_x) && ($this->image_x != '') && isset ($this->image_y) && ($this->image_y != '')) {
// on regarde ici si l'on a pas un objet de plus bas niveau présent dans la variable de session carte
//a charger a la place de l'objet de plus haut niveau
$var_session_retour = $_SESSION['carte'];
if ($var_session_retour) {
$image_x = $this->image_x;
$image_y = $this->image_y;
$liste_zone_carte = $this->liste_zone_carte;
// Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
 
$historique_cartes = explode('*',$this->historique_cartes);
foreach ($historique_cartes as $key => $value) {
if ($key != 0) {
//$this = $this->fils[$value];
foreach (get_object_vars($this->fils[$value]) as $key => $value) {
$this->$key = $value;
}
}
}
$this->image_x = $image_x;
$this->image_y = $image_y;
$this->liste_zone_carte = $liste_zone_carte;
unset($_SESSION['carte']) ;
}
// on regarde qu'est-ce qu'on doit faire grace a la methode _consulterAction() de l'objet Carto_Action
$action = $this->_action->_consulterActionImage($this->image_x, $this->image_y, $this->masque, $this->id);
// Nous distinguons 2 cas :
//le cas ou il faut afficher une nouvelle carte ... :
if ($action['type_action'] == 'Aller_a') {
$id_carte_destination = $action['id_carte_destination'] ;
$this->fils[$id_carte_destination]->liste_zone_carte = $this->liste_zone_carte;
$res .= ''.$this->fils[$id_carte_destination]->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->fils[$id_carte_destination]->_lancerColoriage($id_image);
$obj = serialize($this->fils[$id_carte_destination]);
$_SESSION['carte'] = $obj;
$this->historique = $this->fils[$id_carte_destination]->filiation;
$this->id = $this->fils[$id_carte_destination]->id;
$this->nom = $this->fils[$id_carte_destination]->nom;
}
//Dans le cas où l'on veut rappeler une nouvelle carte, il se peut que la nouvelle carte à rappeler
//soit la même que précédement.
//Cette possibilité peut se présenter quand on clique sur un zone blanche d'une carte (càd dans la mer)
//Là, on recharge la carte précédente :
elseif ($action['type_action'] == 'Recharger') {
$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image);
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
$this->historique = $this->filiation;
}
// ... et le cas ou il faut lancer le dernier niveau
else if ($action['type_action'] == 'Stop') {
unset ($_SESSION['carte']) ;
$this->historique = $this->filiation.'*'.$action['id_zone_geo'];
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
return false;
}
}
elseif ($this->liste_zone_carte != '') {
$liste_zone_carte = $this->liste_zone_carte;
$historique_cartes = explode('*',$this->historique_cartes);
foreach ($historique_cartes as $key => $value) {
if ($key != 0) {
//$this = $this->fils[$value];
foreach (get_object_vars($this->fils[$value]) as $key => $value) {
$this->$key = $value;
}
}
}
$this->liste_zone_carte = $liste_zone_carte;
$res .= ''.$this->_donnerListeZoneCarte($this->liste_zone_carte)."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image, '', $this->liste_zone_carte);
$this->historique = $this->historique_cartes;
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
}
// On teste maintenant si l'on vient d'un lien. Si c'est le cas on a recu un argument
// qui nous donne la "genealogie" de la carte que l'on doit afficher
else if ($this->historique_cartes) {
// Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
$historique_cartes = explode('*',$this->historique_cartes);
foreach ($historique_cartes as $key => $value) {
if ($key != 0) {
//$this = $this->fils[$value];
foreach (get_object_vars($this->fils[$value]) as $key => $value) {
$this->$key = $value;
}
}
}
// une foit que l'on a charge le bon objet nous le colorions
$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image);
$this->historique = $this->historique_cartes;
$obj = serialize($this);
$_SESSION['carte'] = $obj ;
}
// Enfin si on ne vient pas d'une carte ou d'un lien c'est que l'on vient de l'onglet carto du menu
// et on affiche alors la premiere carte
else {
unset ($_SESSION['carte']) ;
$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
$res .= '<input type="image" src="';
$id_image = $this->_donnerIdUnique();
$this->_lancerColoriage($id_image);
$this->historique = $this->id;
$obj = serialize($this);
$_SESSION['carte'] = $obj;
}
$_SESSION['chemin'] = CAR_CHEMIN_TMP;
$_SESSION['fichier'] = $this->id.$id_image;
$res .= CAR_CHEMIN_CARTE.'"';
$res .= ' name="image" />'."\n";
$res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" />'."\n";
$res .= '</p>'."\n";
$res .= '</form>'."\n";
return $res;
}
// +--------------------------------------------------------------------------------------------------+
// LES METHODES PRIVÉES
function _donnerListeZoneCarte($zone_par_defaut = '')
{
$retour = '';
$requete =
'SELECT '.$this->_info_table_zg['nom_chp_id_zone'].', '.$this->_info_table_zg['nom_chp_nom_zone'].
' FROM '.$this->_info_table_zg['nom_table_zone'];
if ($this->_info_table_zg['nom_chp_zone_sup'] != ''){
if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
$requete .=
' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = "'.$this->_id_zone_geo_carte.'"';
}
else{
$requete .=
' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = '.$this->_id_zone_geo_carte;
}
}
$requete .=
' ORDER BY '.$this->_info_table_zg['nom_chp_nom_zone'].' ASC';
$resultat = mysql_query ($requete) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$i=0;
$retour = '<select id="liste_zone_carte" name="liste_zone_carte" onchange="javascript:this.form.submit();">'."\n";
$retour .= '<option value="">Visualiser une zone :</option>'."\n";
$nom_chp_nom_zone = $this->_info_table_zg['nom_chp_nom_zone'];
$nom_chp_id_zone = $this->_info_table_zg['nom_chp_id_zone'];
while ($ligne = mysql_fetch_object ($resultat)) {
if ($zone_par_defaut == $ligne->$nom_chp_id_zone){
$retour .= '<option value="'.$ligne->$nom_chp_id_zone.'" selected="selected">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
}
else {
$retour .= '<option value="'.$ligne->$nom_chp_id_zone.'">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
}
$i++;
}
$retour .= '</select>'."\n";
return $retour;
}
//==============================================================================
// METHODE _lancerColoriage()
//
// Elle lance le coloriage de l'image.
// Elle est lancée toute seule par la méthode donnerFormulaireImage().
// Les informations qui lui sont necessaires sont déjà données à l'objet carte (fond, info_table_couleur).
//==============================================================================
function _lancerColoriage ($id_image = '_00', $nom_fichier = '', $id_zone_a_reperer = '')
{
$this->image = imagecreatefrompng($this->fond);
$this->_colorierImage ($this->image, $this->_info_table_zg['nom_table_zone'], $this->_info_table_zg['nom_chp_id_zone'], $this->_info_table_zg['nom_chp_rouge'],
$this->_info_table_zg['nom_chp_vert'], $this->_info_table_zg['nom_chp_bleu'], $this->_info_table_zg['nom_chp_zone_sup'],
$this->_info_table_zg['tableau_valeurs_zone'], $id_zone_a_reperer) ;
if ($nom_fichier != '') {
imagepng(&$this->image, CAR_CHEMIN_TMP.$nom_fichier.'.png');
//$this->image = imagepng(&$this->image);
}
else {
imagepng(&$this->image, CAR_CHEMIN_TMP.$this->id.$id_image.'.png');
//imagepng(&$this->image);
}
}
//==============================================================================
// METHODE _colorierImage()
//
// Elle réalise le coloriage de l'image.
//==============================================================================
function _colorierImage (&$image_fond, $table_zone_geo, $chp_id_zone_couleur, $chp_rouge, $chp_vert, $chp_bleu, $chp_zone_sup, $tableau_valeurs_zone, $id_zone_a_reperer)
{
//----------------------------------------------------------------------------
// Cherche les valeurs RVB de la couleur de chaque zone géographique et les rentre dans
//un tableau d'objets Carto_InformationCouleur (voir la description de la classe ci-dessus.
$requete_01 =
'SELECT *'.
' FROM '.$table_zone_geo;
if ($chp_zone_sup != ''){
if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
$requete_01 .=
' WHERE '.$chp_zone_sup.' = "'.$this->_id_zone_geo_carte.'"';
}
else{
$requete_01 .=
' WHERE '.$chp_zone_sup.' = '.$this->_id_zone_geo_carte;
}
}
$resultat_01 = mysql_query ($requete_01) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_01.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$i=0;
$attachments = array();
while ($ligne_01 = mysql_fetch_object ($resultat_01)) {
$attachments[$i] = new Carto_Couleur ($ligne_01->$chp_id_zone_couleur, $ligne_01->$chp_rouge, $ligne_01->$chp_vert, $ligne_01->$chp_bleu);
$i++;
}
//Nous libérons toute la mémoire associée à l'identifiant de résultat.
mysql_free_result ($resultat_01);
//----------------------------------------------------------------------------
// On realide l'association entre l'index des couleurs et la zone de meme couleur
$attachments = $this->_construireAssociationIndexZone ($image_fond, $attachments);
//----------------------------------------------------------------------------
//Dans l'application qui utilise la classe carte, nous avons instancié un tableau
//associatif qui contient en clé l'identifiant d'une zone géographique et en valeur
//un nombre (qui peut-être un nombre d'inscrit, d'institutions, de taxons...).
// Nous récupérons ci-dessous la valeur minimum autre que 0 présente dans ce tableau
//puis une valeur conscidérée comme maximum
if (!is_array($tableau_valeurs_zone)) {
$mini = 0;
$medium = 0;
$maxi = 0;
$nbre_valeurs = 0;
}
else {
if (count($tableau_valeurs_zone) == 0) {
$mini=0;
$medium = 0;
$maxi=0;
}
else {
$i=0;
foreach ($tableau_valeurs_zone as $cle => $valeur) {
//Nous recherchons le minimum, le maximum et le la valeur médium juste au dessous du maximum.
if ($valeur != 0) {
$tablo_valeurs[$i] = $valeur;
$i++;
}
}
//Nombre d'entrées dans le tableau de valeurs non nulles :
$nbre_valeurs = count($tablo_valeurs);
$somme_valeurs = array_sum($tablo_valeurs);
$tablo_frequences = array_count_values($tablo_valeurs);
$nbre_frequences = count($tablo_frequences);
if ($nbre_valeurs > 0){
//Nous trions le tableau dans l'ordre croissant :
sort($tablo_valeurs);
//Nous récupérons la valeur la plus petite :
$mini = $tablo_valeurs[0];
$maxi = $tablo_valeurs[$nbre_valeurs-1];
isset($tablo_valeurs[$nbre_valeurs-2]) ? $medium = $tablo_valeurs[$nbre_valeurs-2] : $medium = 0;
$moyenne = $somme_valeurs/$nbre_valeurs;
$ecart_au_carre_moyen = 0;
for ($i = 0; $i < $nbre_valeurs; $i++) {
$ecart_au_carre_moyen += pow(($tablo_valeurs[$i] - $moyenne), 2);
}
$variance = $ecart_au_carre_moyen/$nbre_valeurs;
$ecart_type = sqrt($variance);
$moyenne = round($moyenne, 0);
$variance = round($variance, 0);
$ecart_type = round($ecart_type, 0);
/*echo 'Nombre de valeurs : '.$nbre_valeurs.'<br>';
echo 'Nombre de frequences : '.$nbre_frequences.'<br>';
echo 'Moyenne : '.$moyenne.'<br>';
echo 'Variance : '.$variance.'<br>';
echo 'Ecart-type : '.$ecart_type.'<br>';
echo 'Formule de coloriage : '.$this->_formule_coloriage.'<br>';
echo "mini : $mini medium : $medium maxi : $maxi<br/>";
*/
}
}
}
 
//----------------------------------------------------------------------------
// Nous réalisons le coloriage de toutes les zones :
$requete_03 =
"SELECT $chp_id_zone_couleur ".
"FROM $table_zone_geo";
$resultat_03 = mysql_query ($requete_03) or die('
<H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_03.
'<br/><br/><b>Erreur : </b>'.mysql_error());
while ($ligne_03 = mysql_fetch_object ($resultat_03)) {
$id_zone_geo = $ligne_03->$chp_id_zone_couleur;
if (!isset ($tableau_valeurs_zone[$id_zone_geo])) {
$tableau_valeurs_zone[$id_zone_geo] = 0;
}
//Nous cherchons la couleur a afficher pour chaque zone.
if ($tableau_valeurs_zone[$id_zone_geo] != 0) {
//echo 'ZONE:'.$id_zone_geo."<br/>";
//echo $tableau_valeurs_zone[$id_zone_geo]."<br/>";
$theColor = $this->_donnerCouleur (
$this->_miniR, $this->_miniV, $this->_miniB,
$this->_mediumR , $this->_mediumV , $this->_mediumB ,
$this->_maxiR , $this->_maxiV , $this->_maxiB ,
$mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs,
$tablo_frequences, $nbre_frequences,
$tableau_valeurs_zone[$id_zone_geo],
$this->_formule_coloriage);
//echo $theColor['R'].'<br>';
//echo $theColor['V'].'<br>';
//echo $theColor['B'].'<br>';
}
else {
$theColor['R'] = $this->_zeroR;
$theColor['V'] = $this->_zeroV;
$theColor['B'] = $this->_zeroB;
}
//Nous réalisons le coloriage de toutes les zones de l'image avec la couleur obtenue.
$this->_remplacerCouleur ($image_fond, $attachments, $id_zone_geo, $theColor['R'], $theColor['V'], $theColor['B'], $id_zone_a_reperer);
}
//Nous libérons toute la mémoire associée à l'identifiant de résultat de la requête.
mysql_free_result ($resultat_03);
}
//==============================================================================
// METHODE _construireAssociationIndexZone ($image, &$att)
//
// Le tableau $att est passé par référence. La méthode modifie donc directement
// le tableau et ne renvoit donc rien.
// Attache dans un tableau $att, contenant sous forme d'objet (Carto_ColorInfo)
// les valeurs RVB des zones d'une image, la valeur de l'index correspondant
// à la couleur de la zone.
// Note : les images en question sont constituées de zones distincte possédant
// chacune une couleur unique et unie.
//==============================================================================
function _construireAssociationIndexZone (&$image_fond, &$att)
{
// Nous récupérons le nombre de couleur différentes contenues dans l'image.
//echo $this->fond.'<BR>';
$image_fond = imagecreatefrompng($this->fond);
$taille_palette = imagecolorstotal ($image_fond);
//echo $taille_palette.'<br>';
// Pour chaque couleur contenue dans l'image, nous cherchons l'objet correspondant
// dans le tableau $att, qui contient des informations sur chaque zone de l'image,
// et nous attribuons à l'objet la valeur de l'index de sa couleur dans l'image.
for ($i = 0; $i < $taille_palette; $i++) {
$valeurs_RVB = array();
$valeurs_RVB = imagecolorsforindex ($image_fond, $i);
for ($j = 0; $j < count ($att); $j++) {
if (($att[$j]->rouge == $valeurs_RVB['red']) && ($att[$j]->vert == $valeurs_RVB['green']) && ($att[$j]->bleu == $valeurs_RVB['blue'])) {
$att[$j]->index = $i;
//echo 'ICI'.$att[$j]->id_zone.$att[$j]->index.'<br>';
break;
}
}
}
return $att;
}//Fin méthode _construireAssociationIndexZone()
 
//==============================================================================
// METHODE _donnerCouleur()
//------------------------------------------------------------------------------
// Renvoie pour une valeur donnee la couleur a mettre
//------------------------------------------------------------------------------
// ENTREE
// $miniR : valeur rouge du minimum
// $miniV : valeur vert du minimum
// $miniB : valeur blue du minimum
// $maxiR : valeur rouge du maximum
// $maxiV : valeur vert du maximum
// $maxiB : valeur bleu du maximum
// $mediumR : valeur rouge du deuxieme maximum
// $mediumV : valeur vert du deuxieme maximum
// $mediumB : valeur bleu du deuxieme maximum
// $mini : valeur mini sur l'echelle
// $medium : valeur juste au dessous du maximum sur l'echelle
// $maxi : valeur maxi sur l'echelle
// $val : valeur dont on cherche la couleur
//------------------------------------------------------------------------------
// SORTIE
// $couleur array donne la couleur pour la valeur demande ($val)
//------------------------------------------------------------------------------
function _donnerCouleur ($miniR, $miniV, $miniB, $mediumR, $mediumV, $mediumB, $maxiR,
$maxiV, $maxiB, $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs, $tablo_frequences, $nbre_frequences, $val, $formuleColoriage)
{
if ($formuleColoriage == 'defaut'){
if ($val == $maxi) {
$couleur['R'] = $maxiR;
$couleur['V'] = $maxiV;
$couleur['B'] = $maxiB;
}
if ($val == $mini && $val != $maxi) {
$couleur['R'] = $miniR;
$couleur['V'] = $miniV;
$couleur['B'] = $miniB;
}
if ($maxi/10 > $medium && $maxi/40 < $medium) {
$diff = $medium - $mini;
if ($diff > 0 && $val != $medium && $val != $maxi) {
$diffR = $mediumR - $miniR;
$diffV = $mediumV - $miniV;
$diffB = $mediumB - $miniB;
$variationR = round ( ($diffR/$diff ), 0 );
$variationV = round ( ($diffV/$diff ), 0 );
$variationB = round ( ($diffB/$diff ), 0 );
$couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
$couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
$couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
}
else if ($val == $medium) {
$couleur['R'] = $mediumR;
$couleur['V'] = $mediumV;
$couleur['B'] = $mediumB;
}
}
else {
$diff = $maxi - $mini;
if ($diff > 0 && $val != $maxi && $val != $mini) {
$diffR = $maxiR - $miniR;
$diffV = $maxiV - $miniV;
$diffB = $maxiB - $miniB;
$variationR = round ( ($diffR/$diff ), 0 );
$variationV = round ( ($diffV/$diff ), 0 );
$variationB = round ( ($diffB/$diff ), 0 );
$couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
$couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
$couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
}
else if ($diff == 0){
$couleur['R'] = $mediumR;
$couleur['V'] = $mediumV;
$couleur['B'] = $mediumB;
}
}
}
elseif ($formuleColoriage == 'ecart_type') {
if ($ecart_type == 0) {
$couleur['R'] = $maxiR;
$couleur['V'] = $maxiV;
$couleur['B'] = $maxiB;
}
elseif ($ecart_type >= 1 && $ecart_type <= 15) {
if ($val == $mini) {
$couleur['R'] = $miniR;
$couleur['V'] = $miniV;
$couleur['B'] = $miniB;
}
elseif ($val == $medium) {
$couleur['R'] = $mediumR;
$couleur['V'] = $mediumV;
$couleur['B'] = $mediumB;
}
elseif ($val == $maxi) {
$couleur['R'] = $maxiR;
$couleur['V'] = $maxiV;
$couleur['B'] = $maxiB;
}
else {
$dif_valeur_maxi_mini = $maxi - $mini;
$diffR = $maxiR - $miniR;
$diffV = $maxiV - $miniV;
$diffB = $maxiB - $miniB;
$variationR = round ( ($diffR/$dif_valeur_maxi_mini ), 0 );
$variationV = round ( ($diffV/$dif_valeur_maxi_mini ), 0 );
$variationB = round ( ($diffB/$dif_valeur_maxi_mini ), 0 );
$couleur['R']=$miniR + ($val * $variationR);
$couleur['V']=$miniV + ($val * $variationV);
$couleur['B']=$miniB + ($val * $variationB);
}
}
elseif ($ecart_type > 15) {
//Le tableau est trié de la plus petite à la plus grande clé.
ksort($tablo_frequences);
$i = 0;
foreach ($tablo_frequences as $cle => $valeur){
//Nous cherchons la correspondance entre la valeur et la clé.
if ($cle == $val) {
//Pour faire le Rouge, Vert, Bleu
$couleur['R'] = $miniR + ($i/$nbre_frequences) * ($maxiR - $miniR);
$couleur['V'] = $miniV + ($i/$nbre_frequences) * ($maxiV - $miniV);
$couleur['B'] = $miniB + ($i/$nbre_frequences) * ($maxiB - $miniB);
}
$i++;
}
}
}
return $couleur;
}//Fin méthode _donnerCouleur()
 
//==============================================================================
// METHODE _remplacerCouleur ($img, $att, $id_zone_geo, $r, $g, $b)
//
// $img is the image, $att an array of carto_colorinfo objects, $id_zone_geo the name
// of an object of $att, ($r, $g, $b) the new color.
//
// In the palette of $img, the color matching with $id_zone_geo is modified.
//==============================================================================
function _remplacerCouleur (&$image, &$atta, $id_zone_geo, $rouge, $vert, $bleu, $id_zone_a_reperer)
{
// Nous recherchons la valeur de l'index.
$index = -1;
for ($i = 0; $i < count ($atta); $i++) {
if ($atta[$i]->id_zone == $id_zone_geo) {
$index = $atta[$i]->index;
//Dans le cas où nous voulons repérer une zone sur la carte :
if($id_zone_geo == $id_zone_a_reperer) {
$rouge = 255;
$vert = 0;
$bleu = 0;
}
break;
}
}
// Nous mettons à jour l'image de la carte avec la valeur de l'index.
if ($index >= 0) {
imagecolorset (&$image, $index, $rouge, $vert, $bleu);
}
}//Fin de la méthode _remplacerCouleur
//==============================================================================
// METHODE _donnerIdUnique ()
//
// Cette méthode privée retourne un identifiant de 32 caractères unique.
//
//==============================================================================
function _donnerIdUnique ()
{
$id = '';
$id = md5 (uniqid (rand()));
return $id;
}//Fin de la méthode _donnerIdUnique()
 
 
}//Fin de la classe Carto_Carte()
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.5 2005/11/23 10:25:03 jp_milcent
* Compatibilité avec PHP5.
*
* Revision 1.4 2005/02/23 17:29:38 jpm
* Ajout d'un id au formulaire de la carto.
*
* Revision 1.3 2005/02/22 19:35:08 jpm
* Fin de gestion des variables via les sessions.
*
* Revision 1.2 2005/02/22 16:35:16 jpm
* Mise en forme.
* Utilisation de constantes pour les chemins d'accès aux fichiers.
* Ajout de commentaires.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/cartographie/carto_couleur.class.php
New file
0,0 → 1,189
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Cartographie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: carto_couleur.class.php,v 1.2 2005-02-22 16:35:16 jpm Exp $
/**
* Classe Carto_Couleur.
*
* Classe permettant de réaliser des cartes.
*
*@package Cartographie
//Auteur original :
*@author Nicolas MATHIEU
//Autres auteurs :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-02-22 16:35:16 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTETE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
/**
* Classe Carto_Couleur() - Info sur les couleurs.
*
* La classe Carto_Couleur n'est utilisée que par la classe carte.
* C'est une classe privée.
* Elle sert à stocker les informations (RVB et index) sur la couleur d'une
* zone d'une image.
*/
class Carto_Couleur
{
// +--------------------------------------------------------------------------------------------------+
// LES ATTRIBUTS DE LA CLASSE
var $id_zone;
var $rouge;
var $vert;
var $bleu;
var $index;
// +--------------------------------------------------------------------------------------------------+
// LE CONSTRUCTEUR DE LA CLASSE
/**
* Constructeur Carto_Couleur()
*
* Constructeur initialisant les attributs de la classe Carto_Couleur().
*/
function Carto_Couleur($id_zone, $rouge, $vert, $bleu)
{
$this->id_zone = $id_zone;
$this->rouge = $rouge;
$this->vert = $vert;
$this->bleu = $bleu;
$this->index = -1;
}
// +--------------------------------------------------------------------------------------------------+
// LES METHODES PUBLIQUES
/**
* La fonction array couleur_hexadecimalAuRgb(string color) renvoie des valeurs de couleur en RGB.
*
*Cette fonction prend une valeur de couleur codée en hexadécimal et retourne
*les valeurs RGB correspondantes sous forme de tableau.
*Exemple d'utilisation:
*$rgb = couleur_hexadecimalAuRgb("fffc49");
*echo "<br>couleur_hexadecimalAuRgb de 'fffc49' : ".$rgb['R']." ".$rgb['V']." ".$rgb['B'];
*
*@author iubito <sylvain_machefert@yahoo.fr>
*@copyright iubito - http://iubito.free.fr/ - 2003
*
*@param string $couleur représente une couleur codée en héxadécimal.
*
*@return array tableau associatif contenant les 3 valeurs RGB, avec clé du rouge 'R',
* du vert 'V' et enfin du bleu 'B'.
*/
function couleur_hexadecimalAuRgb($couleur_html)
{
//gestion du #...
if (substr($couleur_html, 0, 1) == "#") {
$couleur_html = substr($couleur_html, 1, 6);
}
$tablo_rgb['R'] = hexdec(substr($couleur_html, 0, 2));
$tablo_rgb['V'] = hexdec(substr($couleur_html, 2, 2));
$tablo_rgb['B'] = hexdec(substr($couleur_html, 4, 2));
return $tablo_rgb;
}
/**
* La fonction string couleur_rgbAuHexadecimal(array tablo) renvoie la valeur d'une
*couleur en héxadécimal.
*
*Cette fonction prend un tableau de valeurs d'une couleur codées en RGB et retourne
*la valeur hexadécimal correspondante sous forme de chaîne.
*C'est la réciproque exacte de la fonction couleur_hexadecimalAuRgb.
*
*@author iubito <sylvain_machefert@yahoo.fr>
*@copyright iubito - http://iubito.free.fr/ - 2003
*
*@param array $tablo_RGB représente un tableau associatif avec les valeurs RGB
*d'une couleur.Les trois clés du tableau sont : R pour rouge, V pour vert et B pour bleu.
*
*@return string chaîne contenant la valeur de la couleur sous forme héxadécimale.
*/
function couleur_rgbAuHexadecimal($tablo_rgb)
{
//Vérification des bornes...
foreach($tablo_rgb as $cle => $valeur) {
$tablo_rgb[$cle] = bornes($tablo_rgb[$cle],0,255);
}
//Le str_pad permet de remplir avec des 0
//parce que sinon couleur_rgbAuHexadecimal(array(0,255,255)) retournerai #0ffff<=manque un 0 !
return "#".str_pad(dechex(($tablo_rgb['R']<<16)|($tablo_rgb['V']<<8)|$tablo_rgb['B']),6,"0",STR_PAD_LEFT);
}
/**
* La fonction int couleur_bornerNbre(int nb, int min, int max) borne des nombres.
*
*Cette fonction permet de borner la valeur d'un nombre entre un minimum $mini et
*un maximum $maxi.
*
*@author iubito <sylvain_machefert@yahoo.fr>
*@copyright iubito - http://iubito.free.fr/ - 2003
*
*@param integer $nbre le nombre à borner.
*@param integer $mini la borne minimum.
*@param integer $maxi la borne maximum.
*
*@return integer le nombre limité aux bornes si nécessaire.
*/
function couleur_bornerNbre($nbre, $mini, $maxi)
{
if ($nbre < $mini) {
$nbre = $mini;
}
if ($nbre > $maxi) {
$nbre = $maxi;
}
return $nbre;
}
}//Fin de la classe Carto_Couleur
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/22 12:02:57 jpm
* Ajout des fichiers de la bibliothèque cartographique.
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/bibliotheque/cartographie/cartes/france.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/bibliotheque/cartographie/cartes/france.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/bibliotheque/cartographie/cartes/france_masque.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/bibliotheque/cartographie/cartes/france_masque.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/eflore_chorologie.php
New file
0,0 → 1,683
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: eflore_chorologie.php,v 1.14 2007-07-17 17:12:46 jp_milcent Exp $
/**
* Affichage des listes de noms de plantes par zones géographiques.
*
* Ce script fournit le code html correspondant aux listes de noms de plantes par zone géographique.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.14 $ $Date: 2007-07-17 17:12:46 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTÊTE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/** Inclusion du fichier config de la base de données de l'application eflore-chorolgie. */
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config_bdd.inc.php';
/** Inclusion du fichier config de l'application eflore-chorolgie. */
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config.inc.php';
/** Inclusion du fichier de langue de l'application eflore-chorologie. */
require_once ECHORO_CHEMIN_LANGUE.'echoro_langue_'.ECHORO_LANGUE.'.inc.php';
 
/** Inclusion de la bibliothèque PEAR de conception de formulaire.*/
require_once ECHORO_CHEMIN_API_PEAR.'HTML/QuickForm.php';
/** Inclusion de la bibliothèque PEAR de gestion des URL.*/
require_once ECHORO_CHEMIN_API_PEAR.'Net/URL.php';
 
// Ajout d'une feuille de style propre à eFlore.
GEN_stockerStyleExterne('echoro', ECHORO_CHEMIN_STYLE.'echoro.css');
 
/** Inclusion de la classe "form" de l'API Formulaire. */
require_once ECHORO_CHEMIN_API_FORMULAIRE.'FORM_formulaire.class.php';
 
/** Inclusion de la classe "Fragmenteur" de l'API Fragmenteur. */
require_once ECHORO_CHEMIN_API_FRAGMENTEUR.'FRAG_Fragmenteur.class.php';
/** Inclusion de la classe "Fragmenteur Session" de l'API Fragmenteur. */
require_once ECHORO_CHEMIN_API_FRAGMENTEUR.'FRAG_Fragmenteur_Session.class.php';
/** Inclusion des fonctions de l'API Fragmenteur. */
require_once ECHORO_CHEMIN_API_FRAGMENTEUR.'FRAG_fragmenteur.fonct.php';
 
/** Inclusion de la bibliothèque Cartographie. */
require_once ECHORO_CHEMIN_BIBLIO_CARTO.'carto_carte.class.php';
 
/** Inclusion du fichier comportant des fonctions communes aux applis du package eFlore-chorologie.*/
include_once ECHORO_CHEMIN_BIBLIO.'echoro_information.fonct.php';
/** Inclusion du fichier gérant les fonctions d'encodage. */
include_once ECHORO_CHEMIN_BIBLIO.'echoro_encodage.fonct.php';
/** Inclusion du fichier gérant les fonctions fournissant l'affichage en XHTML. */
include_once ECHORO_CHEMIN_BIBLIO.'echoro_affichage_xhtml.fonct.php';
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
function afficherContenuNavigation()
{
$sortie = '';
return $sortie;
}
 
function afficherContenuTete()
{
$sortie = '';
return $sortie;
}
 
function afficherContenuCorps()
{
// +--------------------------------------------------------------------------------------------------+
// Initialisation
$sortie = '';
$image_x = null;
if (isset($_POST['image_x'])) $image_x = $_POST['image_x'];
$image_y = null;
if (isset($_POST['image_y'])) $image_y = $_POST['image_y'];
$historique_cartes = null;
if (isset($_POST['historique_cartes'])) $historique_cartes = $_POST['historique_cartes'];
$liste_zone_carte = null;
if (isset($_POST['liste_zone_carte'])) $liste_zone_carte = $_POST['liste_zone_carte'];
$lettre = null;
if (isset($_GET['lettre'])) $lettre = $_GET['lettre'];
$GLOBALS['lettre'] = $lettre;
$departement = null;
if (isset($_GET['departement'])) $departement = $_GET['departement'];
$GLOBALS['departement'] = $departement;
$nombre_taxon = null;
if (isset($_GET['nombre_taxon'])) $nombre_taxon = $_GET['nombre_taxon'];
$GLOBALS['nombre_taxon'] = $nombre_taxon;
// +--------------------------------------------------------------------------------------------------+
// PARAMETRAGE des TABLEAUX de la FONCTION rechercheAlphabet()
$tablo_formatLigne['Class_pair'] = 'echoro_ligne_paire';
$tablo_formatLigne['Class_impair'] = 'echoro_ligne_impaire';
//Choix du contenu de la colonne affichant le nom du taxon.
$tab_valeur_colonne_nom_complet[0] = array(
'type' => 'texte',
'valeur' => ' <b> ');
$tab_valeur_colonne_nom_complet[1] = array(
'type' => 'colonne',
'valeur' => ENT_NOM_COMPLET_02);
$tab_valeur_colonne_nom_complet[2] = array(
'type' => 'texte',
'valeur' => ' [ <span class="echoro_num_nomen">');
$tab_valeur_colonne_nom_complet[3] = array(
'type' => 'colonne',
'valeur' => ENT_NUM_NOMEN);
$tab_valeur_colonne_nom_complet[4] = array(
'type' => 'texte',
'valeur' => '</span> - <span class="echoro_num_taxo">' );
$tab_valeur_colonne_nom_complet[5] = array(
'type' => 'colonne',
'valeur' => ENT_NUM_TAXO);
$tab_valeur_colonne_nom_complet[6] = array(
'type' => 'texte',
'valeur' => '</span> ]');
$tab_valeur_colonne_nom_complet[7] = array(
'type' => 'texte',
'valeur' => ' </b> ');
// Création de l'url pour obtenir les fiches
//Implémentation du tableau contenant les informations pour
//l'affichage des résultats.
$tablo_formatResultat[0] = array(
'Col_nom' => $tab_valeur_colonne_nom_complet,
'Col_width' => 450,
'Col_class' => 'texte_i',
'Col_lien_href' => $GLOBALS['_ECHORO_']['url_base']->getURL().'nn',
'Col_lien_href_param' => ENT_NUM_NOMEN,
'Col_lien_target' => '_blank',
'Col_lien_class' => 'echoro_lien',
'Col_lien_title' => 'Voir la fiche correspondante dans l\'index des plantes');
if ($departement == 971 || $departement == 972 ) {
$tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfgm_nn';
} elseif ($departement == 974) {
$tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfr_nn';
}
$tablo_formatResultat[1]=array(
'Col_nom' => ECS_INTITULE,
'Col_width' => 150,
'Col_class' => 'texte_c');
$fragmenteur['nbre_ligne_page_defaut'] = NBRE_LIGNE_PAGE_DEFAUT;
$fragmenteur['numero_ligne_depart'] = NUMERO_LIGNE_DEPART;
$fragmenteur['afficher_titre'] = AFFICHER_TITRE;
$fragmenteur['titre'] = TITRE_FRAGMENTEUR;
$fragmenteur['tableau_choix_ligne_page'] = $GLOBALS['choro_dep_TABLEAU_CHOIX_LIGNE_PAGE'];
$fragmenteur['modele_info'] = MODELE_INFO;
$fragmenteur['classe_css_titre'] = CLASSE_CSS_TITRE;
$fragmenteur['classe_css_fragmenteur'] = CLASSE_CSS_FRAGMENTEUR;
$fragmenteur['classe_css_info'] = CLASSE_CSS_INFO;
// +--------------------------------------------------------------------------------------------------+
// RÉCUPÉRATION DU NOMBRE DE TAXON PAR DÉPARTEMENT
//Connexion à la base
if(BD_BOTA != BD_GENERALE){
//Nous sommes dans le cas où l'on a deux base: une pour les tables de la chorologie l'autre pour
//les tables de la carto.
//On ne sélectionne donc pas de base.
/** Definition de la variable globale stokant la connexion à la base de données. */
//$GLOBALS['_ECHORO_']['bdd'] = DB::connect(ECHORO_DSN_SANS_BDD);
$GLOBALS['_ECHORO_']['bdd'] = mysql_connect(ECHORO_BDD_SERVEUR, ECHORO_BDD_UTILISATEUR, ECHORO_BDD_MOT_DE_PASSE ) or die (ER_CONNECT.mysql_error());
}
else{
//Nous sommes dans le cas où l'on a une seule base.
//$GLOBALS['_ECHORO_']['bdd'] = DB::connect(ECHORO_DSN);
$GLOBALS['_ECHORO_']['bdd'] = mysql_connect(ECHORO_BDD_SERVEUR, ECHORO_BDD_UTILISATEUR, ECHORO_BDD_MOT_DE_PASSE ) or die (ER_CONNECT.mysql_error());
mysql_select_db(BD_GENERALE, $GLOBALS['_ECHORO_']['bdd']) or die (ER_SEL_BD_GENERALE);
}
//Requète fournisant le nombre de taxon pour chaque département. Nous récupérons aussi grâce à
//cette requète les valeurs nécessaires à la réalisation de la carte dynamique.
$requete_01 =
'SELECT DISTINCT '.CD_ID.
' FROM '.CD_BD_TABLE;
$resultat_01 = mysql_query($requete_01, $GLOBALS['_ECHORO_']['bdd']) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_01.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$requete_02 =
'SELECT * ,count('.CD_ID.') as nbr '.
'FROM '.ECD_BD_TABLE.', '.CD_BD_TABLE.' '.
'WHERE '.CD_ID.' = '.ECD_DEP.' '.
'GROUP BY '.CD_ID;
$resultat_02 = mysql_query($requete_02, $GLOBALS['_ECHORO_']['bdd']) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_02.
'<br/><br/><b>Erreur : </b>'.mysql_error());
//Requête spécifique aux départements des Antilles
$requete_971_972 =
'SELECT * ,count('.EAC_DEP.') as nbr '.
'FROM '.EAC_BD_TABLE.' '.
'WHERE ('.EAC_DEP.' = 971 '.
'OR '.EAC_DEP.' = 972 ) '.
'GROUP BY '.EAC_DEP;
$resultat_971_972 = mysql_query($requete_971_972, $GLOBALS['_ECHORO_']['bdd']) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_971_972.
'<br/><br/><b>Erreur : </b>'.mysql_error());
//Requête spécifique au département de la Réunion
$requete_974 =
'SELECT * ,count('.ERC_DEP.') as nbr '.
'FROM '.ERC_BD_TABLE.' '.
'WHERE '.ERC_DEP.' = 974 '.
'GROUP BY '.ERC_DEP;
$resultat_974 = mysql_query($requete_974, $GLOBALS['_ECHORO_']['bdd']) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_974.
'<br/><br/><b>Erreur : </b>'.mysql_error());
//Nous stockons les résultats de la requete département par département dans
//un tableau associatif : $tableau_dep_taxons.
//Pour chaque identifiant de département, nous sotckons dans le tableau le nombre
//de taxon présent.
 
$tableau_dep_taxons = array();
while ($ligne_01 = mysql_fetch_array($resultat_01)) {
$tableau_dep_taxons[$ligne_01[CD_ID]] = 0;
}
while ($ligne_02 = mysql_fetch_array($resultat_02)) {
$tableau_dep_taxons[$ligne_02[CD_ID]] = $ligne_02['nbr'];
}
//Résultat pour la requête spécifique aux départements des Antilles
while ($ligne_971_972 = mysql_fetch_array($resultat_971_972)) {
$tableau_dep_taxons[$ligne_971_972[EAC_DEP]] = $ligne_971_972['nbr'];
}
//Résultat pour la requête spécifique au département de la Réunion
while ($ligne_974 = mysql_fetch_array($resultat_974)) {
$tableau_dep_taxons[$ligne_974[EAC_DEP]] = $ligne_974['nbr'];
}
//Nous comptons le nombre de département possédant une liste :
$nbre_liste = 0;
foreach($tableau_dep_taxons as $cle => $valeur){
if ($valeur != 0) {
$nbre_liste++;
}
}
// Instanciation du tableau contenant les infos sur la table des zones géo.
$info_table_zg['nom_table_zone'] = CD_BD_TABLE;
$info_table_zg['nom_chp_id_zone'] = CD_ID;
$info_table_zg['nom_chp_nom_zone'] = CD_NOM;
$info_table_zg['nom_chp_rouge'] = CD_R;
$info_table_zg['nom_chp_vert'] = CD_V;
$info_table_zg['nom_chp_bleu'] = CD_B;
$info_table_zg['nom_chp_zone_sup'] = CD_PAYS;
$info_table_zg['tableau_valeurs_zone'] = $tableau_dep_taxons;
// Instanciation du tableau contenant les champs de la table action
$info_table_action['nom_table_action'] = CA_BD_TABLE;
$info_table_action['nom_chp_id_carte'] = CA_CARTE;
$info_table_action['nom_chp_id_zg_action'] = CA_ZG;
$info_table_action['nom_chp_type_zg'] = CA_TYPE_ZG;
$info_table_action['nom_chp_action'] = CA_ACTION;
$info_table_action['nom_chp_id_carte_destination'] = CA_CARTE_DESTINATION;
// +--------------------------------------------------------------------------------------------------+
// CRÉATION DES OBJETS CARTE ET ACTION
//Nous commençons par vider la chaine renvoyée par la fonction putFrame().
$res = '';
//Nous créons un nouvel objet carte.
$france = new Carto_Carte( ID_CARTE_FR_DPT,
ID_ZONE_GEO_CARTE_FR_DPT,
NOM_CARTE_FR_DPT,
ECHORO_FICHIER_CARTE_FR_DPT_MASQUE,
ECHORO_FICHIER_CARTE_FR_DPT,
ECHORO_CHEMIN_CARTE,
$info_table_zg,
$info_table_action);
//Les valeurs de coordonnées x et y du clic sur l'image,
//sont renvoyée automatiquement par le formulaire de la carte.
//A la première exécution du script ces variables sont vides.
$france->historique_cartes = $historique_cartes;
$france->image_x = $image_x;
$france->image_y = $image_y;
$france->liste_zone_carte = $liste_zone_carte;
$france->url = $GLOBALS['_ECHORO_']['url']->getURL();
//Nous définissons les couleurs de la carte:
$france->definirCouleurs (
COULEUR_ZERO_R, COULEUR_ZERO_V, COULEUR_ZERO_B,
COULEUR_MINI_R, COULEUR_MINI_V, COULEUR_MINI_B,
COULEUR_MEDIUM_R, COULEUR_MEDIUM_V, COULEUR_MEDIUM_B,
COULEUR_MAXI_R, COULEUR_MAXI_V, COULEUR_MAXI_B);
$france->definirFormuleColoriage('ecart_type');
// +--------------------------------------------------------------------------------------------------+
// GESTION AFFICHAGE CARTE OU LISTE
//Une fois l'arborescence créee, nous lançons la méthode imgform() pour récuperer le formulaire de la
//carte (dans $carte_france). S'il n'y a pas de carte à afficher imgform() renvoi false. Nous pouvons
//alors afficher la liste des taxons pour le département sélectioné.
 
//Initialisation de la variable $carte_france.
if(empty($carte_france)){
$carte_france = false;
}
 
//Récupération de la valeur de l'action:
//-false = affichage de la liste
//-true = affichage d'une carte (mais ici ce cas ne se présente jamais.
$carte_france = $france->donnerFormulaireImage();
// Nous testons $lettre pour affichier la carte ou la liste
if (isset($lettre)) {
//Affichage de la liste des taxon pour le département.
//L'utilisateur a cliqué sur une lettre dans la liste alphabétique
//sur un département.
//Nous récupérons toutes les infos sur le département :
$tableau_infoDep = echoro_recupererInfoDep($departement);
//Nous affectons les messages d'erreur
if($nombre_taxon != 0){
$message_alerte = message_alerte('01');
} else {
$message_alerte = message_alerte('02');
}
 
//La requete qui sélectionne les noms de taxons pour le département
//et la lettre transmis dans l'url par la variable $lettre.
if ($tableau_infoDep['NUMERO'] == 971 || $tableau_infoDep['NUMERO'] == 972) {
$requete_03 =
'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
' FROM '.EAC_BD_TABLE.', '.EANT_BD_TABLE.', '.ECS_BD_TABLE.
' WHERE ';
if ($lettre != 'tous'){
$requete_03 .= ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"';
} else {
$requete_03 .= ENT_NOM_COMPLET_02.' LIKE "%"';
}
$requete_03 .=
' AND '.EAC_DEP.'='.$tableau_infoDep['NUMERO'].
' AND '.EAC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
' AND '.EAC_STATUT.' = '.ECS_ID.
' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
} elseif ($tableau_infoDep['NUMERO'] == 974) {
$requete_03 =
'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
' FROM '.ERC_BD_TABLE.', '.ERNT_BD_TABLE.', '.ERCS_BD_TABLE.
' WHERE ';
if ($lettre != "tous"){
$requete_03 .= ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"';
} else {
$requete_03 .= ENT_NOM_COMPLET_02.' LIKE "%"';
}
$requete_03 .=
' AND '.ERC_DEP.'='.$tableau_infoDep['NUMERO'].
' AND '.ERC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
' AND '.ERC_STATUT.' = '.ECS_ID.
' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
} else {
$requete_03 =
'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
' FROM '.ECD_BD_TABLE.', '.ENT_BD_TABLE.', '.ECS_BD_TABLE.
' WHERE ';
if ($lettre != "tous"){
$requete_03 .= ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"';
} else {
$requete_03 .= ENT_NOM_COMPLET_02.' LIKE "%"';
}
$requete_03 .=
' AND '.ECD_DEP.'='.$tableau_infoDep['NUMERO'].
' AND '.ECD_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
' AND '.ECD_INDICE.' = '.ECS_ID.
' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
}
$resultat_export = mysql_query($requete_03, $GLOBALS['_ECHORO_']['bdd']) or die('
<h2 style='.STYLE_REQUETE.'>Erreur de requête</h2>'.
'<b>Requete : </b>'.$requete_03.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$GLOBALS['export_bool'] = true;
if (mysql_num_rows($resultat_export) == 0) {
$GLOBALS['export_bool'] = false;
}
if (isset($_GET['action']) && $_GET['action'] == 'export') {
// Gestion de l'export XLS
$i = 0;
if (isset($_GET['format']) && $_GET['format'] == 'xls') {
/** Inclusion de la classe PEAR de création de fichiers excell. */
require_once ECHORO_CHEMIN_API_PEAR.'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();
$nom_feuille = 'Département '.$tableau_infoDep['NUMERO'];
$nom_fichier = 'Chorologie - '.$nom_feuille.'.xls';
$worksheet = $workbook->addWorksheet($nom_feuille);
$format_titre = $workbook->addFormat();
$format_titre->setBold(1);
$format_titre->setSize(16);
$format_intro = $workbook->addFormat();
$format_intro->setBold(1);
$format_intro->setSize(12);
$worksheet->mergeCells($i++, 0, $i, 8);
if ($lettre != 'tous') {
$titre = 'Export des taxons commençant par la lettre '.$lettre.' présents dans le département '.$tableau_infoDep['NUMERO'];
} else {
$titre = 'Export des taxons présents dans le département '.$tableau_infoDep['NUMERO'];
}
$worksheet->writeString(0, 0, $titre, $format_titre);
$worksheet->mergeCells(++$i, 0, $i, 8);
$titre_projet = 'Projet :';
$worksheet->writeString($i++, 0, $titre_projet, $format_intro);
$worksheet->mergeCells($i, 0, $i, 8);
$txt_projet = 'Phytochorologie départementale - Coordinateur : Philippe JULVE';
$worksheet->writeString($i++, 0, $txt_projet);
$worksheet->mergeCells($i, 0, $i, 8);
$titre_licence = 'Licence :';
$worksheet->writeString($i++, 0, $titre_licence, $format_intro);
$worksheet->mergeCells($i, 0, $i, 8);
$txt_licence = 'http://creativecommons.org/licenses/by-sa/2.0/fr/';
$worksheet->writeUrl($i++, 0, $txt_licence);
$worksheet->mergeCells($i, 0, $i, 8);
$titre_contributeur = 'Contributeurs :';
$worksheet->writeString($i++, 0, $titre_contributeur, $format_intro);
for ($j = 0; $j < count($tableau_infoDep['CORRESPONDANTS']); $j++){
if(ereg("[@]", $tableau_infoDep['CORRESPONDANTS'][$j]['COURRIEL'])){
$worksheet->writeString($i, 0, $tableau_infoDep['CORRESPONDANTS'][$j]['PRENOM']);
$worksheet->writeString($i, 1, $tableau_infoDep['CORRESPONDANTS'][$j]['NOM']);
$worksheet->writeString($i++, 2, $tableau_infoDep['CORRESPONDANTS'][$j]['COURRIEL']);
} else {
$worksheet->writeString($i, 0, $tableau_infoDep['CORRESPONDANTS'][$j]['PRENOM']);
$worksheet->writeString($i++, 1, $tableau_infoDep['CORRESPONDANTS'][$j]['NOM']);
}
}
$worksheet->mergeCells($i, 0, $i, 8);
$titre_source = 'Sources :';
$worksheet->writeString($i++, 0, $titre_source, $format_intro);
for ($j = 0; $j < count($tableau_infoDep['SOURCES']); $j++){
$worksheet->mergeCells($i, 0, $i, 8);
$worksheet->writeString($i++, 0, $tableau_infoDep['SOURCES'][$j]);
}
$worksheet->setColumn(0, 1, 20);
$worksheet->setColumn(2, 2, 60);
$worksheet->setColumn(3, 3, 20);
$worksheet->writeString($i, 0, 'N° taxonomique', $format_intro);
$worksheet->writeString($i, 1, 'N° nomenclatural', $format_intro);
$worksheet->writeString($i, 2, 'Nom complet', $format_intro);
$worksheet->writeString($i++, 3, 'Indice', $format_intro);
while ($ligne = mysql_fetch_array($resultat_export)) {
//echo '<pre>'.print_r($ligne).'</pre>';
$worksheet->writeNumber($i, 0, $ligne[ENT_NUM_TAXO]);
$worksheet->writeNumber($i, 1, $ligne[ENT_NUM_NOMEN]);
$worksheet->writeString($i, 2, $ligne[ENT_NOM_COMPLET_02]);
$worksheet->writeString($i++, 3, $ligne[ECS_INTITULE]);
}
$workbook->send($nom_fichier);
$workbook->close();
exit();
} else {
return remplaceEntiteHTLM(message_alerte('03'));
}
} else {
//Nous plaçons des données javascripts pour la gestion des infos bulles:
$tableau_inclusion = array($tableau_infoDep['NOM'], $nombre_taxon);
$res = inclusion_html('titre_liste', $tableau_inclusion);
$tableau_inclusion = array($tableau_infoDep['SOURCES'], $tableau_infoDep['CORRESPONDANTS']);
$res .= inclusion_html('info_dep', $tableau_inclusion);
$tablo_inclusion = array($lettre);
$res .= rechercheAlphabet($requete_03, $GLOBALS['_ECHORO_']['url']->getURL(), '&amp;departement='.$tableau_infoDep['NUMERO'].'&amp;nombre_taxon='.$nombre_taxon,
inclusion_html('tab_ouvre_liste_taxon', $tablo_inclusion), inclusion_html('tab_evol_ferme'), $tablo_formatLigne,
$tablo_formatResultat, $message_alerte, $fragmenteur);
return remplaceEntiteHTLM($res);
}
} else {
if (!$carte_france) {
//Affichage quand il n'y a plus de carte.
//Dans notre cas l'utilisateur a cliqué sur un département.
//Nous appelons la fonction javascript à insérer dans l'entête.
GEN_stockerFichierScript('echoro', ECHORO_CHEMIN_SCRIPT.'echoro.js');
//Nous récupérons l'identifiant du département transmis dans l'historique sous
//la forme france*numéro_departement
$tableau_departement = explode ('*',$france->historique);
//Nous récupérons toutes les infos sur le département :
$tableau_infoDep = echoro_recupererInfoDep($tableau_departement[1]);
//Attribution à la variable globale du numéro du département
$GLOBALS['departement'] = $tableau_infoDep['NUMERO'];
if ($tableau_infoDep['NUMERO'] == 971 || $tableau_infoDep['NUMERO'] == 972) {
$tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfgm_nn';
} elseif ($tableau_infoDep['NUMERO'] == 974) {
$tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfr_nn';
}
//Nous récupérons le nombre de taxons présent dans le département
if(isset($tableau_dep_taxons[$tableau_infoDep['NUMERO']]) && $tableau_dep_taxons[$tableau_infoDep['NUMERO']] != 0) {
$nombre_taxon = $tableau_dep_taxons[$tableau_infoDep['NUMERO']];
$message_alerte = message_alerte('01');
} else {
$nombre_taxon = 0;
$message_alerte = message_alerte('02');
}
//Nous affichons par défaut la liste des taxons dont le nom
//commence par A.
$lettre = 'A';
//La requete qui sélectionne les noms de taxons pour le département
//et la lettre A.
if ($tableau_infoDep['NUMERO'] == 971 || $tableau_infoDep['NUMERO'] == 972) {
$requete_04 =
'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
' FROM '.EAC_BD_TABLE.', '.EANT_BD_TABLE.', '.ECS_BD_TABLE.
' WHERE '.ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"'.
' AND '.EAC_DEP.' = '.$tableau_infoDep['NUMERO'].
//' AND '.EAC_NUM_TAXO.' = '.ENT_NUM_TAXO.
' AND '.EAC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
' AND '.EAC_STATUT.' = '.ECS_ID.
' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
} elseif ($tableau_infoDep['NUMERO'] == 974) {
$requete_04 =
'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
' FROM '.ERC_BD_TABLE.', '.ERNT_BD_TABLE.', '.ERCS_BD_TABLE.
' WHERE '.ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"'.
' AND '.ERC_DEP.' = '.$tableau_infoDep['NUMERO'].
//' AND '.ERC_NUM_TAXO.' = '.ENT_NUM_TAXO.
' AND '.ERC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
' AND '.ERC_STATUT.' = '.ECS_ID.
' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
} else {
$requete_04 =
'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
' FROM '.ECD_BD_TABLE.', '.ENT_BD_TABLE.', '.ECS_BD_TABLE.
' WHERE '.ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"'.
' AND '.ECD_DEP.' = '.$tableau_infoDep['NUMERO'].
//' AND '.ECD_NUM_TAXO.' = '.ENT_NUM_TAXO.
' AND '.ECD_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
' AND '.ECD_INDICE.' = '.ECS_ID.
' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
}
$resultat_export = mysql_query($requete_04, $GLOBALS['_ECHORO_']['bdd']) or die('
<h2 style='.STYLE_REQUETE.'>Erreur de requête</h2>'.
'<b>Requete : </b>'.$requete_04.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$GLOBALS['export_bool'] = true;
if (mysql_num_rows($resultat_export) == 0) {
$GLOBALS['export_bool'] = false;
}
// Gestion de l'affichage XHTML
$tableau_inclusion = array($tableau_infoDep['NOM'], $nombre_taxon);
$res = inclusion_html('titre_liste', $tableau_inclusion);
$tableau_inclusion = array($tableau_infoDep['SOURCES'], $tableau_infoDep['CORRESPONDANTS']);
$res .= inclusion_html('info_dep', $tableau_inclusion);
//La fonction gérant l'affichage de la liste alphabétique et
//de l'affichage suite à une seléction dans la liste.
$tablo_inclusion = array($lettre);
$res .= FRAG_rechercherAvecAlphabet($requete_04, $GLOBALS['_ECHORO_']['url']->getURL(), '&amp;departement='.$tableau_infoDep['NUMERO'].'&amp;nombre_taxon='.$nombre_taxon,
inclusion_html('tab_ouvre_liste_taxon', $tablo_inclusion), inclusion_html('tab_evol_ferme'), $tablo_formatLigne,
$tablo_formatResultat, $message_alerte, $fragmenteur);
return remplaceEntiteHTLM($res);
} else {
//Affichage de la carte de france des départements.
//L'utilisateur arrive sur la page.
$tableau_inclusion = array($nbre_liste);
$res = inclusion_html('titre_carte', $tableau_inclusion);//Le titre dans une ligne de tableau
//Nous affichons la carte
$res .= $carte_france;
$res .= inclusion_html('avertissement_carte');//Commentaire dans des lignes de tableau
return remplaceEntiteHTLM($res);
}//Fin du test de $carte_france.
}//Fin du test de $lettre
}
 
function afficherContenuPied()
{
return inclusion_html('pied_page');
}
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.13 2006-05-31 16:00:13 jp_milcent
* Gestion de l'url pour le lien vers la licence du fichier d'export.
*
* Revision 1.12 2006/05/31 15:14:51 jp_milcent
* Amélioration de la gestion de l'export xls (suite).
*
* Revision 1.11 2006/05/31 15:11:29 jp_milcent
* Amélioration de la gestion de l'export xls.
*
* Revision 1.10 2006/05/31 14:43:35 jp_milcent
* Correction de la gestion des sessions pour l'affichage de la carte.
* Ajout de l'export au format xls.
*
* Revision 1.9 2005/06/30 15:23:02 jpm
* Utilisation d'un fichier javascript à part.
*
* Revision 1.8 2005/05/31 13:45:10 jpm
* Mise en place de la gestion entités html.
*
* Revision 1.7 2005/05/19 07:37:47 jpm
* Correction des bogues et derniers réglages avant mise en ligne du site v4.
*
* Revision 1.6 2005/03/15 15:10:40 jpm
* Ajout de l'API formulaire.
*
* Revision 1.5 2005/02/24 17:06:17 jpm
* Changement du nom d'une fonction.
*
* Revision 1.4 2005/02/23 17:31:04 jpm
* Modification de noms de classes css.
*
* Revision 1.3 2005/02/22 19:36:03 jpm
* Suppression de code html superflu.
*
* Revision 1.2 2005/02/22 16:39:20 jpm
* Changement divers pour l'adaptation à Papyrus.
*
* Revision 1.1 2005/02/21 19:36:57 jpm
* Ajout du code de l'appli de tela v3.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/eflore_chorologie_source.php
New file
0,0 → 1,149
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: eflore_chorologie_source.php,v 1.2 2005-05-31 13:45:10 jpm Exp $
/**
* Affichage des sources biblio utilisées pour les listes chorologiques.
*
* Ce script fournit le code html permettant d'afficher les sources biblio des listes chorologiques.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.2 $ $Date: 2005-05-31 13:45:10 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTÊTE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/** Inclusion du fichier config de la base de données de l'application eflore-chorolgie. */
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config_bdd.inc.php';
/** Inclusion du fichier config de l'application eflore-chorolgie. */
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config.inc.php';
/** Inclusion du fichier de langue de l'application eflore-chorologie. */
require_once ECHORO_CHEMIN_LANGUE.'echoro_langue_'.ECHORO_LANGUE.'.inc.php';
 
// Ajout d'une feuille de style propre à eFlore.
GEN_stockerStyleExterne('echoro', ECHORO_CHEMIN_STYLE.'echoro.css');
 
/** Inclusion du fichier comportant des fonctions communes aux applis du package eFlore-chorologie.*/
include_once ECHORO_CHEMIN_BIBLIO.'echoro_information.fonct.php';
 
/** Inclusion du fichier gérant les fonctions d'encodage. */
include_once ECHORO_CHEMIN_BIBLIO.'echoro_encodage.fonct.php';
 
/** Inclusion du fichier gérant les fonctions fournissant l'affichage en XHTML. */
include_once ECHORO_CHEMIN_BIBLIO.'echoro_affichage_xhtml.fonct.php';
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
function afficherContenuNavigation()
{
$sortie = '';
return $sortie;
}
 
function afficherContenuTete()
{
$sortie = '';
return $sortie;
}
 
function afficherContenuCorps()
{
// +--------------------------------------------------------------------------------------------------+
// Initialisation
$sortie = '';
//Connection à la base
$connexion = mysql_connect(ECHORO_BDD_SERVEUR, ECHORO_BDD_UTILISATEUR, ECHORO_BDD_MOT_DE_PASSE) or die (ER_CONNECT);
mysql_select_db(BD_BOTA, $connexion) or die (ER_SEL_BD_BOTA);
//Requête récupérant les infos sur les sources pour tous les départements
$requete_01 =
'SELECT '.EZD_ID.', '.EZD_NOM.', '.ECSO_REF.
' FROM '.ECSO_BD_TABLE.', '.EZD_BD_TABLE.', '.ECDS_BD_TABLE.
' WHERE '.EZD_ID.' = '.ECDS_DEP.' AND '.ECDS_SOURCE.' = '.ECSO_ID.
' ORDER BY '.EZD_ID.' ASC';
$resultat_01 = mysql_query ($requete_01) or die('
<H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
'<b>Requete : </b>'.$requete_01.
'<br/><br/><b>Erreur : </b>'.mysql_error());
$num_dep = '';
//Nous ajoutons un titre à la page
$sortie .= inclusion_html('titre_sources');
//Boucle affichant les lignres de résultats
while($resultat_source = mysql_fetch_array($resultat_01)) {
//Dans le cas d'un nouveau département, nous devons afficher le titre...
if ($num_dep != $resultat_source[EZD_ID]){
//Nous stockons la nouvelle valeur du numéro de département.
$num_dep = $resultat_source[EZD_ID];
// Nous fermons la liste du département précédent
if ($num_dep != 1) {
$sortie .= '</ul>'."\n";
}
// Ligne de titre.
$sortie .= '<h2>'.$resultat_source[EZD_ID].'&nbsp;-&nbsp;'.$resultat_source[EZD_NOM].'</h2>'."\n";
// Ligne de résultat.
$sortie .= '<ul>'."\n";
$sortie .= '<li>'.$resultat_source[ECSO_REF].'</li>'."\n";
} else {
//Nous sommes dans le même département nous affichons juste la nouvelle ligne de résultat.
$sortie .= '<li>'.$resultat_source[ECSO_REF].'</li>'."\n";
}
}
$sortie .= '</ul>'."\n";
return remplaceEntiteHTLM($sortie);
}
 
function afficherContenuPied()
{
return inclusion_html('pied_page');
}
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.1 2005/02/23 17:30:41 jpm
* Ajout de la consultation des sources de la chorologie.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/langues/echoro_langue_fr.inc.php
New file
0,0 → 1,56
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.3 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of eFlore-chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro_langue_fr.inc.php,v 1.1 2005-02-22 12:03:28 jpm Exp $
/**
* Fichier de traduction en langue française.
*
* Fichier contenant des constantes et des variables globales permettant de traduire l'application
* eFlore-chorologie.
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2005-02-22 12:03:28 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
 
// +------------------------------------------------------------------------------------------------------+
// Les paramtres des urls.
define('ECHORO_LG_URL_ONGLET', 'onglet');
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/trunk/presentations/styles/echoro.css
New file
0,0 → 1,159
/* vim: set expandtab tabstop=4 shiftwidth=4: */
/* ========================================================================================================
| Copyright (C) 1999-2004 Tela Botanica (accueil@tela-botanica.org) |
+---------------------------------------------------------------------------------------------------------+
| This file is part of eFlore-Chorologie. |
| |
| Foobar is free software; you can redistribute it and/or modify it under the terms of the GNU General |
| Public License as published by the Free Software Foundation; either version 2 of the License, or |
| (at your option) any later version. |
| |
| Foobar is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public |
| License for more details. |
| |
| You should have received a copy of the GNU General Public License along with Foobar; if not, write to |
| the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+---------------------------------------------------------------------------------------------------------+
CVS : $Id: echoro.css,v 1.2 2005-02-23 17:29:13 jpm Exp $
===========================================================================================================
DESCRIPTION :
Designe de l'application eFlore-Chorologie.
===========================================================================================================
Auteur original :
Jean-Pascal MILCENT <jpm@tela-botanica.org>
Autres auteurs :
Aucun
===========================================================================================================
AUTEUR : $Author: jpm $
VERSION : $Revision: 1.2 $ $Date: 2005-02-23 17:29:13 $
======================================================================================================= */
 
/* +----------------------------------------------------------------------------------------------------+
| STRUCTURE |
+----------------------------------------------------------------------------------------------------+*/
 
 
 
/* +----------------------------------------------------------------------------------------------------+
| DESIGN |
+----------------------------------------------------------------------------------------------------+*/
 
/* Styles de la cartographie*/
#cartographie {
text-align: center;
}
 
/* Styles de la recherche alphabétique et du fragmenteur*/
#real_alphabet, #real_page_quantite, #real_nbre_resultat, .nav_fragmenteur {
text-align: center;
}
 
/* Styles des résultats de la recherche alphabétique*/
#echoro_resultat {
border: 3px solid #d0abe1;
border-collapse: collapse;
width: 90%;
margin: auto;
}
#echoro_resultat thead, tfoot {
background-color:#eee1f5;
border:1px solid #d0abe1;
}
 
#echoro_resultat tbody {
background-color:#FFFFFF;
border:1px solid #d0abe1;
}
 
#echoro_resultat th {
font-family:monospace;
border:1px dotted #d0abe1;
padding:5px;
background-color:#eee1f5;
width:25%;
text-align:center;
}
 
#echoro_resultat td {
font-family:sans-serif;
font-size:80%;
border:1px solid #d0abe1;
padding:5px;
text-align:center;
}
 
#echoro_resultat caption {
font-family:sans-serif;
text-align: center;
width:90%;
margin:auto;
}
 
/* Information diverses de la chorologie*/
.echoro_pied_page {
font-family: Arial, Helvetica, Verdana, sans-serif;
font-size: 10px;
color: #A9A9A9;
background-color: #FFFFFF;
}
 
.echoro_avertissement {
font-family: Arial, Helvetica, Verdana, sans-serif;
font-size: 12px;
color: #FF0000;
background-color: #FFFFFF;
}
 
.echoro_lien {
text-decoration: none;
font-family: Arial, Helvetica, Verdana, sans-serif;
font-size: 12px;
}
 
.eflore_lien_info {
text-decoration: none;
color: #000000;
}
 
.echoro_ligne_impaire {
background-color: #f9f5fa;
}
 
.echoro_num_taxo {
color: #CC0000;
}
 
.echoro_num_nomen {
color: #009900;
}
 
/* Formatage général du texte de la chorologie*/
/* Ces styles devrait passer dans la feuille de style globale!*/
.texte_g {
font-weight: bold;
}
 
.texte_i {
font-style: italic;
}
 
.texte_j {
text-align: justify;
}
 
.texte_c {
text-align: center;
}
 
.texte_ga {
text-align: left;
}
 
/* +--Fin des CSS ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
*
* +-- Fin des CSS ----------------------------------------------------------------------------------------+
*/
/trunk/presentations/images/info.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/trunk/presentations/images/info.png
New file
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/trunk/presentations/scripts/echoro.js
New file
0,0 → 1,113
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | Javascript version 1.5 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) Tela Botanica (accueil@tela-botanica.org), 2005. |
// +------------------------------------------------------------------------------------------------------+
// | This file is part of Chorologie. |
// | |
// | Foobar is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | |
// | Foobar is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public License |
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: echoro.js,v 1.1 2005-05-19 07:37:47 jpm Exp $
/**
* Contient le code javascript.
*
*
*@package eFlore
*@subpackage Chorologie
//Auteur original :
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2005
*@version $Revision: 1.1 $ $Date: 2005-05-19 07:37:47 $
// +------------------------------------------------------------------------------------------------------+
*/
 
//D'autres scripts sur http://www.toutjavascript.com
//Si vous utilisez ce script, merci de m'avertir ! < webmaster@toutjavascript.com >
//Auteur original :Olivier Hondermarck <webmaster@toutjavascript.com>
//Modifs compatibilité Netscape 6/Mozilla : Cédric Lamalle 09/2001 <cedric@cpac.embrapa.br>
//Correction Mac IE5 (Merci Fred)
var IB=new Object;
var posX=0;
var posY=0;
var xOffset=10;
var yOffset=10;
 
function AffBulle(texte)
{
contenu='<table border="0" cellspacing="0" cellpadding="'+IB.NbPixel+'"><tr bgcolor="'+IB.ColContour+'"><td><table border="0" cellpadding="2" cellspacing="0" bgcolor="'+IB.ColFond+'"><tr><td style="color:'+IB.ColTexte+';">'+texte+'</td></tr></table></td></tr></table>&nbsp;';
var finalPosX=posX-xOffset;
if (finalPosX<0) {
finalPosX=0;
}
if (document.getElementById) {
document.getElementById('bulle').innerHTML=contenu;
document.getElementById('bulle').style.top=posY+yOffset+'px';
document.getElementById('bulle').style.left=finalPosX+'px';
document.getElementById('bulle').style.zIndex=100;
document.getElementById('bulle').style.visibility="visible";
//Nous vérifions que nous utilisons bien IE ou Mozilla pour supprimer les valeurs tiltes de images fournissant les infos bulles d'aides.
//Cela pourrait être amélioré en vérifiant aussi les liens car l'aide pourrait être donnée par l'intermédiaire de lien.
//alert(navigator.appName);
if (document.images.length) {
//if (navigator.appName == 'Netscape' || navigator.appName == 'Microsoft Internet Explorer') {
for(i=1; i<document.images.length; i++) {
var nom = 'echoro_info_0'+i;
if (document.images[nom] != null ) {
document.images[nom].title = "";
}
}
}
}
}
 
function getMousePos(e)
{
if (document.getElementById) {
posX=e.pageX;
posY=e.pageY;
}
}
 
function HideBulle()
{
if (document.getElementById) {
document.getElementById('bulle').style.visibility = 'hidden';
}
}
 
function InitBulle(ColTexte,ColFond,ColContour,NbPixel)
{
IB.ColTexte=ColTexte;IB.ColFond=ColFond;IB.ColContour=ColContour;IB.NbPixel=NbPixel;
if (document.getElementById) {
document.onmousemove = getMousePos;
document.write('<div id="bulle" style="position:absolute;top:0;left:0;visibility:hidden;"></div>');
}
}
 
//// InitBulle(couleur de texte, couleur de fond, couleur de contour, taille contour);
InitBulle("navy","#FFCC66","orange", 1);
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/