/trunk/client/cartographie/configuration/car_config.inc.php |
---|
New file |
0,0 → 1,79 |
<?php |
// +----------------------------------------------------------------------------+ |
// |car_config.inc.php | |
// +----------------------------------------------------------------------------+ |
// | Copyright (c) 2004 Tela Botanica | |
// +----------------------------------------------------------------------------+ |
// | Le module d'inscription amélioré, configuration | |
// +----------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +----------------------------------------------------------------------------+ |
// |
// $Id: car_config.inc.php,v 1.1 2004-12-15 13:30:38 alex Exp $ |
/** |
//=========================DEFINITION DE VARIABLES ================================= |
* Définition des variables globales |
//================================================================================== |
*/ |
$GLOBALS['car_auth'] = &$_GEN_commun['pear_auth'] ; |
$GLOBALS['car_db'] = &$_GEN_commun['pear_db'] ; |
/** |
//==================================== LES URLS ================================== |
* Constantes liées à l'utilisation des url |
//================================================================================== |
*/ |
define ("CAR_URL", $_GEN_commun['url']->getURL()) ; |
/** |
//==================================== LES CHEMINS ================================= |
* Constantes définissant les chemins d'accès aux différents fichiers inclus dans les |
* applications. |
//================================================================================== |
*/ |
define("CAR_CHEMIN_APPLI",'client/cartographie') ;//le chemin vers l'application courrante |
define("CAR_CHEMIN_LIBRAIRIE",'client/cartographie/bibliotheque/');//le chemin de la librairie de fichier php |
/** |
//==================================== CONSTANTES ================================== |
* Constantes des noms de tables et de champs dans l'annuaire |
//================================================================================== |
*/ |
define ("CAR_ANNUAIRE", "annuaire") ; |
define ("CAR_CHAMPS_NOM", "a_nom") ; // Nom du champs nom |
define ("CAR_CHAMPS_MAIL", "a_mail") ; // Nom du champs mail |
define ("CAR_CHAMPS_PRENOM", "a_prenom") ; // Nom du champs prénom |
define ("CAR_CHAMPS_CE_PAYS", "a_pays") ; |
define ("CAR_CHAMPS_DPT", " a_numero_dpt") ; |
define ("CAR_CHAMPS_ID", "a_id") ; |
define ("CAR_CHAMPS_DATE_INS", "a_date_inscription") ; |
define ("CAR_CHAMPS_REGION", "a_region") ; |
define ("CAR_CHAMPS_CODE_POSTAL", "a_code_postal") ; |
define ("CAR_CHAMPS_VILLE", "a_ville") ; |
define ("PROJET_DPT", "gen_FRENCH_DPT") ; // Nom de la table département |
define ("PROJET_PAYS", "gen_COUNTRY") ; // Nom de la table pays |
/** |
//==================================== CONSTANTES ================================== |
* Constantes |
//================================================================================== |
**/ |
define ("CAR_TEXTE_FIN_MAIL", "\n---------------------------------------------------------------------------\n". |
"Ce message vous est envoyé par l'intermédiaire du site Internet\n". |
"(http://www.outils-reseaux.org) Serveur de ressources pour les réseaux\n". |
"auquel vous êtes inscrit. D'autres inscrits peuvent avoir reçu ce message.\n". |
"Ne répondez que si vous êtes concerné, ou si vous avez des informations\n". |
"utiles à transmettre au demandeur.\n". |
"----------------------------------------------------------------------------") ; |
define ("CAR_NO_DESTINATAIRE", "Veuillez cocher au moins un destinataire pour votre mail"); |
define ("CAR_MAIL_ADMIN", "carto@outils-reseaux.org") ; // L'email de l'administrateur de la carto pour envoyer un message en double |
?> |
/trunk/client/cartographie/fonds/asie.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/asie.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/moyenorient_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/moyenorient_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/namerique.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/namerique.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/monde5c.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/monde5c.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/samerique.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/samerique.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/afrique.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/afrique.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/asie_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/asie_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/france.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/france.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/europe.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/europe.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/namerique_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/namerique_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/oceanie.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/oceanie.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/monde_masque5c.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/monde_masque5c.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/samerique_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/samerique_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/afrique_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/afrique_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/moyenorient.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/moyenorient.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/france_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/france_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/europe_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/europe_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/fonds/oceanie_masque.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/trunk/client/cartographie/fonds/oceanie_masque.png |
---|
New file |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/trunk/client/cartographie/bibliotheque/lib.carto.php |
---|
New file |
0,0 → 1,1230 |
<?php |
//vim: set expandtab tabstop=4 shiftwidth=4: |
// +-----------------------------------------------------------------------------------------------+ |
// | PHP version 4.0 | |
// +-----------------------------------------------------------------------------------------------+ |
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | |
// +-----------------------------------------------------------------------------------------------+ |
// | This source file is subject to version 2.0 of the PHP license, | |
// | that is bundled with this package in the file LICENSE, and is | |
// | available at through the world-wide-web at | |
// | http://www.php.net/license/2_02.txt. | |
// | If you did not receive a copy of the PHP license and are unable to | |
// | obtain it through the world-wide-web, please send a note to | |
// | license@php.net so we can mail you a copy immediately. | |
// +-----------------------------------------------------------------------------------------------+ |
/** |
* Fichier regroupant toutes les classes de la carto |
* |
*Toutes les classe de la carto sont disponibles dans ce fichier. |
* |
*@package carto |
//Auteur original : |
*@author Nicolas MATHIEU |
//Autres auteurs : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2003 |
*@version 01 juillet 2002 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id: lib.carto.php,v 1.1 2004-12-15 13:30:20 alex Exp $ |
// FICHIER : $RCSfile: lib.carto.php,v $ |
// AUTEUR : $Author: alex $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2004-12-15 13:30:20 $ |
// |
// +-----------------------------------------------------------------------------------------------+ |
// A FAIRE : |
// 1.-Rendre cette classe indépendante de l'arborescence du site. |
// On trouve encore des urls ou des chemins d'accé au fichier codé en dur dans l'appli |
// Il faudrait pouvoir les paramétrés dans la classe. |
// 2.- Supprimer l'attribut $this->historiques qui doit être devenu complétement obscoléte et le |
// remplacer par $this->historique_cartes |
// 3.- Renomer $this->liste_zone_carte en quelque chose de plus parlant... |
*/ |
//Inclusion d'un autre fichier de librairie |
include_once 'lib.couleur.php'; |
//Sert seulement en interne pour le débogage des requetes SQL |
$NOM_FICHIER = 'lib.carto.php'; |
//================================================================================================== |
// La classe Carto_HistoriqueCarte 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_HistoriqueCarte |
{ |
var $historique; |
var $url; |
var $caractere_separation; |
var $class_css; |
var $nom; |
function Carto_HistoriqueCarte ($objet_carte, $caractere = '>', $class = '') |
{ |
global $GS_GLOBAL; |
$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_HistoriqueCarte(). |
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.'&historique_cartes='.$chemin.'"> '.$this->caractere_separation.' '.$tabnom[$key].'</a>'; |
} |
return $res; |
}//Fin de la méthode afficherHistoriqueCarte(). |
}//Fin de la classe Carto_HistoriqueCarte. |
//================================================================================================ |
//La classe 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 |
{ |
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; |
function Carto_Action ($table_zone_geo, $zone_chp_id_zone, $chp_rouge, |
$chp_vert, $chp_bleu, $table_carto_action, $action_chp_id_carte, $action_chp_id_zone, |
$action_chp_type_zone, $chp_action, $chp_destination) |
{ |
$this->_table_zone_geo = $table_zone_geo; |
$this->_id_zone_geo_zone = $zone_chp_id_zone; |
$this->_rouge = $chp_rouge; |
$this->_vert = $chp_vert; |
$this->_bleu = $chp_bleu; |
$this->_table_action = $table_carto_action; |
$this->_id_carte_action = $action_chp_id_carte; |
$this->_id_zone_geo_action = $action_chp_id_zone; |
$this->_type_zone_geo_action = $action_chp_type_zone; |
$this->_action = $chp_action; |
$this->_id_carte_destination = $chp_destination; |
} |
//********************************************************************************************************** |
// Méthode get_cartoAction($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. |
//================================================================================================ |
// L'objet carte est l'objet principal de la carto. C'est lui possede qui possède les methodes |
//pour colorier les cartes. |
// Il faut lui donner les parametres suivants : |
// -le nom de la premier carte ($id). |
// -le nom du masque ($masque). |
// -le nom du fond de carte a colorier ($fond). |
// -le tableau $info_table_couleur : il contient les renseignements concernant la table des couleurs ainsi |
// qu'un autre tableau dans lequel figure le nombre d'elements par zone. |
// L'objet comporte deux methodes principales : |
// -'ajouterFils()' qui permet d'ajouter les cartes de niveau inferieur. |
// -'donnerFormulaireImage()' qui lance l'action a faire en fonction de l'action de l'utilisateur. |
// Il faut aussi penser a donner directement le champs url. |
//================================================================================================ |
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) |
{ |
$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; |
$this->_action = new Carto_Action($info_table['nom_table_zone'],$info_table['nom_chp_id_zone'], $info_table['nom_chp_rouge'], $info_table['nom_chp_vert'], $info_table['nom_chp_bleu'], |
'carto_ACTION', 'CA_ID_Carte', 'CA_ID_Zone_geo', 'CA_Type_zone', 'CA_Action', 'CA_ID_Carte_destination'); |
$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); |
$res = '<img src="cartographie/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="image.png">'; |
return $res; |
} |
//******************************************************************************************************** |
// 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 action="'.$this->url.'" method="post">'."\n"; |
$res .= '<p>'.CAR_CLIQUER_ACCEDER ; |
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]; |
} |
} |
$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]; |
} |
} |
$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]; |
} |
} |
// 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 ; |
} |
$res .= CAR_CHEMIN_LIBRAIRIE.'/lib.carto.extractimg.php?fichier='.$this->id.$id_image.'"'; |
$res .= ' name="image" onmouseover="javascript:show(\'d\');" onmouseout="javascript:show(\'d\');" />'."\n"; |
$res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" /></p>'; |
$res .= '</form>'."\n"; |
return $res; |
} |
/*|=============================================================================================|*/ |
/*| LES METHODES PRIVEES |*/ |
/*|---------------------------------------------------------------------------------------------|*/ |
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 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,'tmp/carto/'.$nom_fichier.'.png'); |
//$this->image = imagepng(&$this->image); |
} |
else { |
imagepng(&$this->image,'tmp/carto/'.$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_InformationCouleur ($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() |
//============================================================================== |
// La classe Carto_InformationCouleur 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_InformationCouleur |
{ |
/*|=============================================================================================|*/ |
/*| LES ATTRIBUTS DE LA CLASSE |*/ |
/*|---------------------------------------------------------------------------------------------|*/ |
var $id_zone; |
var $rouge; |
var $vert; |
var $bleu; |
var $index; |
/*|=============================================================================================|*/ |
/*| LE CONSTRUCTEUR DE LA CLASSE |*/ |
/*|---------------------------------------------------------------------------------------------|*/ |
function Carto_InformationCouleur ($id_zone, $rouge, $vert, $bleu) |
{ |
$this->id_zone = $id_zone; |
$this->rouge = $rouge; |
$this->vert = $vert; |
$this->bleu = $bleu; |
$this->index = -1; |
} |
}//Fin de la classe Carto_InformationCouleur |
//============================================================================== |
// FUNCTION carto_errorMsg () |
// |
// Return an error message about carto management. |
//============================================================================== |
function carto_errorMsg () |
{ |
global $PRIVATE_CARTO_ERROR; |
return $PRIVATE_CARTO_ERROR; |
} |
//============================================================================== |
// FUNCTION carto_putErrorImage () |
// |
// Dump a default error image. |
//============================================================================== |
function carto_putErrorImage () |
{ |
$img = '47494638396120002000800100ff000000006621f90401000001002c000000002000'. |
'200040026d848fa99be11f009c53524373b41ae2da65dcf345e1693aa536aae77ab1'. |
'e1d7a2a22ad5f60deb6fe54bc958418f0b05bb9190bee2f1327276a2c91db16a855a'. |
'a4489c31bb24d5b8614fb32b2a9ea7d228738785dab673e7f81554b395682008dc52'. |
'4236b4210416c390a8a85000003b'; |
header ('Content-Type: image/gif'); |
echo gs_hex2bin ($img); |
} |
//============================================================================== |
//============================================================================== |
// Les fonctions qui suivent permettent de recuperer des infos (nom de l'image, |
// du masque, du niveau ou du titre) d'une carte. |
//============================================================================== |
//============================================================================== |
function carto_consulterTitreCarte ($id_carte) |
{ |
global $NOM_FICHIER; |
$requete = |
'SELECT * '. |
' FROM carto_DESCRIPTION_CARTE'. |
' WHERE CDC_ID_Carte = "'.$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>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'. |
'<b>Nom fonction : </b> carto_consulterTitreCarte<br/>'. |
'<b>Requete : </b>'.$requete. |
'<br/><br/><b>Erreur : </b>'.mysql_error()); |
$ligne = mysql_fetch_object ($resultat); |
$titre_carte = $ligne->CDC_Titre_carte; |
return $titre_carte; |
} |
function carto_consulterFichierFond ($id_carte) |
{ |
global $NOM_FICHIER; |
$requete = |
'SELECT * '. |
' FROM carto_DESCRIPTION_CARTE'. |
' WHERE CDC_ID_Carte = "'.$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>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'. |
'<b>Nom fonction : </b> carto_consulterFichierFond<br/>'. |
'<b>Requete : </b>'.$requete. |
'<br/><br/><b>Erreur : </b>'.mysql_error()); |
$ligne = mysql_fetch_object ($resultat); |
$nom_fichier_carte_fond = $ligne->CDC_Carte_fond; |
return $nom_fichier_carte_fond; |
} |
function carto_consulterFichierMasque ($id_carte) |
{ |
global $NOM_FICHIER; |
$requete = |
'SELECT * '. |
' FROM carto_DESCRIPTION_CARTE'. |
' WHERE CDC_ID_Carte = "'.$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>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'. |
'<b>Nom fonction : </b> carto_consulterFichierMasque<br/>'. |
'<b>Requete : </b>'.$requete. |
'<br/><br/><b>Erreur : </b>'.mysql_error()); |
$ligne = mysql_fetch_object ($resultat); |
$nom_fichier_carte_masque = $ligne->CDC_Carte_masque; |
return $nom_fichier_carte_masque; |
} |
function carto_consulterTypeZoneCarte ($id_carte) |
{ |
global $NOM_FICHIER; |
$requete = |
'SELECT * '. |
' FROM carto_DESCRIPTION_CARTE'. |
' WHERE CDC_ID_Carte = "'.$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>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'. |
'<b>Nom fonction : </b> carto_consulterTypeZoneCarte<br/>'. |
'<b>Requete : </b>'.$requete. |
'<br/><br/><b>Erreur : </b>'.mysql_error()); |
$ligne = mysql_fetch_object ($resultat); |
$type_zone_carte = $ligne->CDC_Type_zone_carte; |
return $type_zone_carte; |
} |
function carto_consulterIdZoneGeoCarte ($id_carte) |
{ |
global $NOM_FICHIER; |
$requete = |
'SELECT * '. |
' FROM carto_DESCRIPTION_CARTE'. |
' WHERE CDC_ID_Carte = "'.$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>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'. |
'<b>Nom fonction : </b> carto_consulterIdZoneGeoCarte<br/>'. |
'<b>Requete : </b>'.$requete. |
'<br/><br/><b>Erreur : </b>'.mysql_error()); |
$ligne = mysql_fetch_object ($resultat); |
$id_zone_carte = $ligne->CDC_ID_Zone_geo_carte; |
return $id_zone_carte; |
} |
//-- Fin du code source ------------------------------------------------------------ |
/* |
* $Log: not supported by cvs2svn $ |
* Revision 1.17 2003/05/16 13:17:40 jpm |
* Correction d'une erreur (des guillemets en trop). |
* |
* Revision 1.16 2003/03/14 14:12:14 jpm |
* Correction bug : le nom de la zone ne restait pas dans la liste déroulante. |
* |
* Revision 1.15 2003/03/11 14:49:47 jpm |
* Simplification de l'interface. |
* |
* Revision 1.14 2003/03/07 15:10:24 jpm |
* Ajout de commentaires : "à faire" |
* |
* Revision 1.13 2003/03/04 16:14:06 alex |
* Utilisation de la fonction cxt_clearVariable à la place de cxt_clear |
* |
* Revision 1.12 2003/03/04 08:09:39 jpm |
* Ajout suppression des fichiers carto du dossier carto temporaire. |
* |
* Revision 1.11 2003/02/26 12:12:38 jpm |
* Ajout de la gestion des listes déroulantes représentant la zone géographique |
* à éditer. |
* |
* Revision 1.10 2003/02/21 13:50:57 jpm |
* Mise à jour nouvel objet Carto_Carte. |
* |
* Revision 1.8 2003/02/14 08:01:14 jpm |
* Changement des noms de méthode selon les recommandations de PEAR. |
* Ajout d'attributs à la classe. |
* Ajout de la possibilité de redéfinir les couleurs de coloriage d'une carte. |
* Ajout de la possibilité de désigner une formule mathématique de coloriage. |
* |
* Revision 1.7 2003/02/12 18:15:56 jpm |
* Meilleure gestion de l'obtentions des valeurs minimum, medium et maximum |
* pour l'ensemble des zones géographiques d'une carte. |
* Ajout de commentaires. |
* Meilleure gestion des erreurs de requêtes. |
* |
* |
*/ |
?> |
/trunk/client/cartographie/bibliotheque/lib.carto.extractimg.php |
---|
New file |
0,0 → 1,82 |
<?php |
//vim: set expandtab tabstop=4 shiftwidth=4: |
// +-----------------------------------------------------------------------------------------------+ |
// | PHP version 4.0 | |
// +-----------------------------------------------------------------------------------------------+ |
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | |
// +-----------------------------------------------------------------------------------------------+ |
// | This source file is subject to version 2.0 of the PHP license, | |
// | that is bundled with this package in the file LICENSE, and is | |
// | available at through the world-wide-web at | |
// | http://www.php.net/license/2_02.txt. | |
// | If you did not receive a copy of the PHP license and are unable to | |
// | obtain it through the world-wide-web, please send a note to | |
// | license@php.net so we can mail you a copy immediately. | |
// +-----------------------------------------------------------------------------------------------+ |
/** |
* Fichier permettant de générer l'entête HTTP des images de la carto. |
* |
*Ce fichier permet de construire l'image de la carto et de la faire passer dans les entête HTTP. |
* |
*@package lib.carto |
//Auteur original : |
*@author Luc LAMBERT |
//Autres auteurs : |
*@author Nicolas MATHIEU |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
*@copyright Tela-Botanica 2000-2003 |
*@version 01 juillet 2002 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id: lib.carto.extractimg.php,v 1.1 2004-12-15 13:30:20 alex Exp $ |
// FICHIER : $RCSfile: lib.carto.extractimg.php,v $ |
// AUTEUR : $Author: alex $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2004-12-15 13:30:20 $ |
// |
// +-----------------------------------------------------------------------------------------------+ |
// A FAIRE : |
// |
*/ |
define("CAR_CHEMIN_TMP",'../../../tmp/carto/'); |
$image = imagecreatefrompng(CAR_CHEMIN_TMP.$fichier.'.png'); |
chmod (CAR_CHEMIN_TMP.$fichier.".png", 755) ; |
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"); |
imagepng($image); |
unlink(CAR_CHEMIN_TMP.$fichier.'.png'); |
//Nous nettoyons le dossier tmp des fichiers qu'il contient: |
$poignet_de_dossier = opendir(CAR_CHEMIN_TMP); |
while ($fichier_dechet = readdir($poignet_de_dossier)) { |
if ($fichier_dechet != "." && $fichier_dechet != "..") { |
unlink(CAR_CHEMIN_TMP.$fichier_dechet); |
} |
} |
closedir($poignet_de_dossier); |
exit(); |
//-- Fin du code source ------------------------------------------------------------ |
/* |
* $Log: not supported by cvs2svn $ |
* Revision 1.7 2003/03/04 08:09:39 jpm |
* Ajout suppression des fichiers carto du dossier carto temporaire. |
* |
* Revision 1.6 2003/02/21 13:50:57 jpm |
* Mise à jour nouvel objet Carto_Carte. |
* |
* Revision 1.5 2003/02/14 07:56:45 jpm |
* Ajout d'un entête. |
* Ajout de requêtes HTTP pour éviter le cache. |
* |
* |
* |
*/ |
?> |
/trunk/client/cartographie/bibliotheque/lib.couleur.php |
---|
New file |
0,0 → 1,136 |
<?php |
//vim: set expandtab tabstop=4 shiftwidth=4: |
// +-----------------------------------------------------------------------------------------------+ |
// | PHP version 4.0 | |
// +-----------------------------------------------------------------------------------------------+ |
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | |
// +-----------------------------------------------------------------------------------------------+ |
// | This source file is subject to version 2.0 of the PHP license, | |
// | that is bundled with this package in the file LICENSE, and is | |
// | available at through the world-wide-web at | |
// | http://www.php.net/license/2_02.txt. | |
// | If you did not receive a copy of the PHP license and are unable to | |
// | obtain it through the world-wide-web, please send a note to | |
// | license@php.net so we can mail you a copy immediately. | |
// +-----------------------------------------------------------------------------------------------+ |
/** |
* Fichier regroupant toutes les fonctions manipulant les couleurs |
* |
*Toutes les fonctions sur les couleurs sont disponibles dans ce fichier. |
* |
*@package couleur |
//Auteur original : |
*@author iubito <sylvain_machefert@yahoo.fr> |
//Autres auteurs : |
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org> |
//Autres auteurs : |
*@copyright Tela-Botanica 2000-2003 |
*@version 25 fevrier 2003 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id: lib.couleur.php,v 1.1 2004-12-15 13:30:20 alex Exp $ |
// FICHIER : $RCSfile: lib.couleur.php,v $ |
// AUTEUR : $Author: alex $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2004-12-15 13:30:20 $ |
// |
// +-----------------------------------------------------------------------------------------------+ |
// A FAIRE : |
*/ |
/** |
//==================================== FONCTION ================================== |
* 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; |
} |
/** |
//==================================== FONCTION ================================== |
* 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); |
} |
/** |
//==================================== FONCTION ================================== |
* 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; |
} |
?> |
/trunk/client/cartographie/bibliotheque/car_cartographie.fonct.php |
---|
New file |
0,0 → 1,165 |
<?php |
//vim: set expandtab tabstop=4 shiftwidth=4: |
// +-----------------------------------------------------------------------------------------------+ |
// | PHP version 4.0 | |
// +-----------------------------------------------------------------------------------------------+ |
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | |
// +-----------------------------------------------------------------------------------------------+ |
// | This source file is subject to version 2.0 of the PHP license, | |
// | that is bundled with this package in the file LICENSE, and is | |
// | available at through the world-wide-web at | |
// | http://www.php.net/license/2_02.txt. | |
// | If you did not receive a copy of the PHP license and are unable to | |
// | obtain it through the world-wide-web, please send a note to | |
// | license@php.net so we can mail you a copy immediately. | |
// +-----------------------------------------------------------------------------------------------+ |
/** |
* |
*Page permettant l'affichage des informations de cartographie des inscrits |
* |
*@package cartographie |
//Auteur original : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@copyright Tela-Botanica 2000-2004 |
*@version 03 mai 2004 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id: car_cartographie.fonct.php,v 1.1 2004-12-15 13:30:20 alex Exp $ |
// FICHIER : $RCSfile: car_cartographie.fonct.php,v $ |
// AUTEUR : $Author: alex $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2004-12-15 13:30:20 $ |
*/ |
/** function carto_texte_cocher () |
* |
* |
* @return string HTML |
*/ |
function carto_texte_cocher () { |
$res .= "<div class=\"texte\">".CAR_CHECK_UNCHECK ; |
$res .= " <input type=\"checkbox\" name=\"selecttotal\" onclick=\"javascript:setCheckboxes('formmail');\"></div>"; |
return $res ; |
} |
/** function carto_formulaire () |
* |
* |
* |
* @return string HTML |
*/ |
function carto_formulaire ($titre_mail="", $corps = "") { |
global $HTTP_USER_AGENT, $GS_GLOBAL ; |
$res .= "<div class=\"chapo\">".CAR_ENVOYER_MAIL."</div>\n"; |
$res .= "<div>\n<table width=\"100%\" border=\"0\">\n" |
.'<tr><td class="texte">'.CAR_SUJET.' :</td>'."\n" |
.'<td><input class="forml" type="text" name="titre_mail" size="60" value="'.$GLOBALS['titre_mail'].'"></td>'."\n" |
.'</tr><tr><td class="texte" valign="top">'.CAR_MESSAGE.' : </td>'."\n" |
.'<td><textarea class="forml" name="corps" rows="5" cols="60">'.$GLOBALS['corps'].'</textarea></td>'."\n" |
.'</tr><tr><td></td><td align="center">'; |
if (ereg ("Gecko",$HTTP_USER_AGENT)) { |
$res.='<input class="spip_bouton" type="submit" value="'.CAR_ENVOYER.'">'; |
} else { |
$res.='<input class="spip_bouton" type="submit" onclick="javascript:confirmer();" value="'.CAR_ENVOYER.'">'; |
} |
$res.="</td>\n</tr>\n</table>\n</div></form>\n"; |
return $res ; |
} |
/** |
* Renvoie le code HTML de la liste des inscrits |
* en fonction de la requete passé en parametre |
* |
* @return Renvoie le code HTML de la liste des inscrits |
*/ |
function listes_inscrit ($requete, $url, $select, $argument, &$db, $niveau = 'pays') { |
$res = "<div>"; |
$res .= "<form action=\"$url&mailer=1"."&select=$select\" method=\"post\" name=\"formmail\">\n |
<tr><td>\n |
<table id=\"table_outilsreseaux\" width=\"100%\">\n |
<colgroup> |
<col /> |
<col /> |
<col /> |
<col /> |
<col /> |
<col /> |
</colgroup> |
<thead>\n |
<th> </th>\n |
<th>".CAR_NOM."</th>\n |
<th>".CAR_PRENOM."</th>\n |
<th>".CAR_DATE_INS."</th>\n |
<th>".($niveau == 'pays' ? CAR_REGION : CAR_CP)."</th>\n |
<th>".CAR_VILLE."</th>\n |
</thead>\n"; |
$resultat= $GLOBALS['car_db']->query($requete); |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
} |
$indic=0; |
$i=1; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
if ($indic==0) { |
$res.="<tr class=\"ligne_impaire\">\n"; |
$indic=1; |
} |
else { |
$res.="<tr class=\"ligne_paire\">\n"; |
$indic=0; |
} |
$res.="<td><input type=\"checkbox\" name=\"select[]\" value=\"".$ligne[CAR_CHAMPS_MAIL]."\"></td>\n |
<td>".$ligne[CAR_CHAMPS_NOM]." </td>\n |
<td>".$ligne[CAR_CHAMPS_PRENOM]." </td>\n |
<td>".date("d m Y", strtotime($ligne[CAR_CHAMPS_DATE_INS]))." </td>\n |
<td>".($niveau == 'pays' ? $ligne[CAR_CHAMPS_REGION] : $ligne[CAR_CHAMPS_CODE_POSTAL])." </td>\n |
<td>".$ligne[CAR_CHAMPS_VILLE]." </td>\n" ; |
$res .= "</tr>\n"; |
} |
$res .= "</table></div>\n"; |
return $res ; |
} |
/** envoie_mail() |
* |
* |
* @return envoie l'email |
*/ |
function envoie_mail () { |
$requete = "select ".CAR_CHAMPS_MAIL." from ".CAR_ANNUAIRE. |
" where ".CAR_CHAMPS_ID."='".$GLOBALS['car_auth']->getAuthData (CAR_CHAMPS_ID)."'"; |
$resultat = $GLOBALS['car_db']->query($requete); |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()); |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC); |
$entete = "From: <".$ligne[CAR_CHAMPS_MAIL].">\n"; |
$GLOBALS['corps'] .= CAR_TEXTE_FIN_MAIL; |
$GLOBALS['corps'] = stripslashes($GLOBALS['corps']) ; |
$liste = "" ; |
foreach ($GLOBALS['select'] as $key => $value) { |
mail ($value, stripslashes($GLOBALS['titre_mail']), $GLOBALS['corps'] , $entete) ; |
$liste .= $value."\n" ; |
} |
$GLOBALS['corps'] .= "\n----------------------------------------------------------------------------"; |
$GLOBALS['corps'] .= "\n".CAR_MESSAGE_ENVOYE_A." :\n $liste" ; |
mail (CAR_MAIL_ADMIN, stripslashes($GLOBALS['titre_mail']), $GLOBALS['corps'], $entete); |
$GLOBALS['corps'] = ''; |
$GLOBALS['titre_mail'] = ''; |
} |
//-- Fin du code source ------------------------------------------------------------ |
/* |
* $Log: not supported by cvs2svn $ |
* |
*/ |
?> |
/trunk/client/cartographie/cartographie.php |
---|
New file |
0,0 → 1,280 |
<?php |
//vim: set expandtab tabstop=4 shiftwidth=4: |
// +-----------------------------------------------------------------------------------------------+ |
// | PHP version 4.0 | |
// +-----------------------------------------------------------------------------------------------+ |
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | |
// +-----------------------------------------------------------------------------------------------+ |
// | This source file is subject to version 2.0 of the PHP license, | |
// | that is bundled with this package in the file LICENSE, and is | |
// | available at through the world-wide-web at | |
// | http://www.php.net/license/2_02.txt. | |
// | If you did not receive a copy of the PHP license and are unable to | |
// | obtain it through the world-wide-web, please send a note to | |
// | license@php.net so we can mail you a copy immediately. | |
// +-----------------------------------------------------------------------------------------------+ |
/** |
* |
*Page permettant l'affichage des informations de cartographie des inscrits |
* |
*@package cartographie |
//Auteur original : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@copyright Tela-Botanica 2000-2004 |
*@version 03 mai 2004 |
// +-----------------------------------------------------------------------------------------------+ |
// |
// $Id: cartographie.php,v 1.1 2004-12-15 13:33:03 alex Exp $ |
// FICHIER : $RCSfile: cartographie.php,v $ |
// AUTEUR : $Author: alex $ |
// VERSION : $Revision: 1.1 $ |
// DATE : $Date: 2004-12-15 13:33:03 $ |
*/ |
include_once 'client/cartographie/configuration/car_config.inc.php' ; |
if (isset($lang)) { |
include_once CAR_CHEMIN_APPLI."/langues/car_langue_$lang.inc.php" ; |
} else { |
include_once CAR_CHEMIN_APPLI.'/langues/car_langue_fr.inc.php' ; |
} |
include_once CAR_CHEMIN_APPLI.'/bibliotheque/lib.carto.php' ; |
include_once CAR_CHEMIN_APPLI.'/bibliotheque/car_cartographie.fonct.php' ; |
include_once 'HTML/QuickForm.php' ; |
// Ajout d'une feuille de style externe |
GEN_stockerStyleExterne ('cartographie', 'client/cartographie/cartographie.css') ; |
if (isset($GLOBALS['logout']) && $GLOBALS['logout']==1) { |
$GLOBALS['car_auth']->logout(); |
} |
//================================================================================================ |
//================================================================================================ |
function AUTH_formulaire_login() { |
// l'url de la page en cours |
$url = CAR_URL; |
$res = ''; |
$form = new HTML_QuickForm ('inscription', 'post', preg_replace ('/&/', '&', $url).'&historique_cartes='.$GLOBALS['historique_cartes'].'&fin=true') ; |
$form->addElement ('text', 'username', CAR_EMAIL) ; |
$form->addElement ('password', 'password', CAR_MOT_DE_PASSE) ; |
$form->addElement('submit', 'connexion', CAR_VALIDER); |
$res .= $form->toHTML() ; |
$res .= "<div>".CAR_LAIUS_INSCRIPTION." <a href=\"\">".CAR_S_INSCRIRE."</a></div>\n" ; |
$res .= "<div>".CAR_TEXTE_PERDU."</div>\n" ; |
return $res; |
} |
function afficherContenuCorps () |
{ |
global $image_x; |
global $image_y; |
global $historique_cartes; |
global $mailer; |
global $fin; |
global $sendpwd;//utilisé dans liste_inscrit.php |
global $select;//utilisé dans liste_inscrit.php |
global $liste_zone_carte; |
//=========================================================================================================== |
$requete_01 = |
"SELECT CP_ID_Continent,count(cp_id_continent) as nbr". |
" FROM ".CAR_ANNUAIRE.", carto_PAYS". |
" WHERE ".CAR_CHAMPS_CE_PAYS." = cp_id_pays". |
" GROUP BY cp_id_continent"; |
$resultat_01 = $GLOBALS['car_db']->query ($requete_01) ; |
if (DB::isError($resultat)) { |
die ($resultat_01->getMessage().'<br />'.$resultat_01->getDebugInfo()) ; |
} |
$tableau_ad_continent=array(); |
while ($ligne_01 = $resultat_01->fetchRow(DB_FETCHMODE_OBJECT)) { |
$tableau_ad_continent[$ligne_01->CP_ID_Continent] = $ligne_01->nbr; |
} |
$info_continent['nom_table_zone'] = 'carto_CONTINENT'; |
$info_continent['nom_chp_id_zone'] = 'CC_ID_Continent'; |
$info_continent['nom_chp_nom_zone'] = 'CC_Intitule_continent'; |
$info_continent['nom_chp_rouge'] = 'CC_Couleur_R'; |
$info_continent['nom_chp_vert'] = 'CC_Couleur_V'; |
$info_continent['nom_chp_bleu'] = 'CC_Couleur_B'; |
$info_continent['nom_chp_zone_sup'] = ''; |
$info_continent['tableau_valeurs_zone'] = $tableau_ad_continent; |
//============================================================================================================ |
$requete_02 = 'SELECT CC_ID_Continent FROM carto_CONTINENT'; |
$resultat_02 = $GLOBALS['car_db']->query ($requete_02) ; |
if (DB::isError($resultat)) { |
die ($resultat_02->getMessage().'<br />'.$resultat_02->getDebugInfo()) ; |
} |
while ($ligne_02 = $resultat_02->fetchRow(DB_FETCHMODE_OBJECT)) { |
$requete_03 = |
'SELECT CP_ID_Pays, count(cp_id_pays) as nbr '. |
' FROM '.CAR_ANNUAIRE.', carto_PAYS'. |
' WHERE '.CAR_CHAMPS_CE_PAYS.'= cp_id_pays'. |
' AND cp_id_continent = "'.$ligne_02->CC_ID_Continent.'"'. |
' GROUP BY cp_id_pays'; |
$resultat_03 = $GLOBALS['car_db']->query ($requete_03) ; |
if (DB::isError($resultat_03)) { |
die ($resultat_03->getMessage().'<br />'.$resultat_03->getDebugInfo()) ; |
} |
$tableau_ad_pays = array(); |
while ($ligne_03 = $resultat_03->fetchRow(DB_FETCHMODE_OBJECT)) { |
$tableau_ad_pays[$ligne_03->CP_ID_Pays] = $ligne_03->nbr; |
} |
$info_pays[$ligne_02->CC_ID_Continent]['nom_table_zone'] = 'carto_PAYS'; |
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_id_zone'] = 'CP_ID_Pays'; |
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_nom_zone'] = 'CP_Intitule_pays'; |
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_rouge'] = 'CP_Couleur_R'; |
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_vert'] = 'CP_Couleur_V'; |
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_bleu'] = 'CP_Couleur_B'; |
$info_pays[$ligne_02->CC_ID_Continent]['nom_chp_zone_sup'] = 'CP_ID_Continent'; |
$info_pays[$ligne_02->CC_ID_Continent]['tableau_valeurs_zone'] = $tableau_ad_pays; |
} |
//============================================================================================================ |
$requete_04 = "SELECT * ,count(cd_id_departement) as nbr". |
" FROM ".CAR_ANNUAIRE.", carto_DEPARTEMENT". |
" WHERE ".CAR_CHAMPS_CE_PAYS." = 'fr'". |
" AND a_numero_dpt = cd_id_departement". |
" GROUP BY cd_id_Departement"; |
$resultat_04 = $GLOBALS['car_db']->query ($requete_04) ; |
if (DB::isError($resultat_04)) { |
die(' |
<H2 class="erreur">Erreur de requête</H2>'. |
'<b>Requete : </b>'.$requete_04. |
'<br/><br/><b>Erreur : </b>'.$resultat_04->getMessage()); |
} |
$tableau_ad_dpt_france = array(); |
while ($ligne_04 = $resultat_04->fetchRow(DB_FETCHMODE_OBJECT)) { |
$tableau_ad_dpt_france[$ligne_04->CD_ID_Departement] = $ligne_04->nbr; |
} |
$info_dpt_france['nom_table_zone'] = 'carto_DEPARTEMENT'; |
$info_dpt_france['nom_chp_id_zone'] = 'CD_ID_Departement'; |
$info_dpt_france['nom_chp_nom_zone'] = 'CD_Intitule_departement'; |
$info_dpt_france['nom_chp_rouge'] = 'CD_Couleur_R'; |
$info_dpt_france['nom_chp_vert'] = 'CD_Couleur_V'; |
$info_dpt_france['nom_chp_bleu'] = 'CD_Couleur_B'; |
$info_dpt_france['nom_chp_zone_sup'] = 'CD_ID_Pays'; |
$info_dpt_france['tableau_valeurs_zone'] = $tableau_ad_dpt_france; |
//============================================================================================================ |
//============================================================================================================ |
// On cree tout d'abord l'arborescence |
$monde = new Carto_Carte ('continent', '', 'Monde', 'monde_masque5c.png', 'monde5c.png', CAR_CHEMIN_APPLI.'/fonds/', $info_continent); |
$monde->definirCouleurs ('255', '255', '255','255', '250', '130','255', '204', '0','255', '153', '0') ; |
$monde->historique_cartes = $historique_cartes; |
$monde->image_x = $image_x; |
$monde->image_y = $image_y; |
$monde->liste_zone_carte = $liste_zone_carte; |
$monde->url = CAR_URL; |
foreach ($info_pays as $cle => $valeur) { |
$requete_05 = |
"SELECT CDC_Titre_carte, CDC_ID_Carte, CDC_Carte_fond, CDC_Carte_masque, CDC_ID_Zone_geo_carte". |
" FROM carto_DESCRIPTION_CARTE, carto_ACTION ". |
" WHERE CA_ID_Zone_geo = '$cle'". |
" AND CA_Type_zone = 1". |
" AND CA_ID_Carte_destination = CDC_ID_Carte"; |
$resultat_05 = $GLOBALS['car_db']->query ($requete_05) ; |
if (DB::isError($resultat)) { |
die ($resultat_05->getMessage().'<br />'.$resultat_05->getDebugInfo()) ; |
} |
$ligne_05 = $resultat_05->fetchRow(DB_FETCHMODE_OBJECT); |
$monde->ajouterFils($ligne_05->CDC_ID_Carte, $ligne_05->CDC_ID_Zone_geo_carte, $ligne_05->CDC_Titre_carte, |
$ligne_05->CDC_Carte_masque, $ligne_05->CDC_Carte_fond, $valeur); |
$monde->fils[$ligne_05->CDC_ID_Carte]->definirCouleurs ('255', '255', '255','255', '250', '130','255', '204', '0','255', '153', '0') ; |
} |
$monde->fils['europe']->ajouterFils('france', 'fr', 'France' ,'france_masque.png', 'france.png', $info_dpt_france); |
$monde->fils['europe']->fils['france']->definirCouleurs ('255', '255', '255','255', '250', '130','255', '204', '0','255', '153', '0') ; |
// Une fois l'arborescence créée on lance la methode donnerFormulaireImage() pour recuperer la carte |
// (dans $img). S'il n'y a pas de carte a afficher donnerFormulaireImage() renvoi false. On peut alors recuperer |
// le niveau ou on en est grace a $monde->historique (du type continent*namerique*ca). |
$res = ''; |
$img = false; |
if ($mailer == 1 || $fin == true) { |
$objet_carte = $_SESSION['carte'] ; |
$monde = unserialize($objet_carte);} |
else { |
$img = $monde->donnerFormulaireImage(); |
} |
// On teste donc img |
if (!$img ) { |
include 'liste_inscrit.php'; |
return $res; |
} |
else { |
$historique_carte = new Carto_HistoriqueCarte ($monde, '>', 'chemin_carto'); |
$res .= $historique_carte->afficherHistoriqueCarte(); |
$res .= "<br />\n" ; |
$tab = explode('*',$monde->historique); |
$res .= $img; |
$res .= ''.CAR_CLIQUER; |
$res .= '<br />'.CAR_COULEUR."\n"; |
$res .= '<div class="avertissement_carto" id="d"><strong>'.CAR_AVERTISSEMENT_TITRE.' : </strong>'; |
$res .= CAR_AVERTISSEMENT."</div>\n"; |
return $res; |
} |
} |
//-- Fin du code source ------------------------------------------------------------ |
/* |
* $Log: not supported by cvs2svn $ |
* Revision 1.2 2004/06/18 08:48:03 alex |
* améliorations diverses |
* |
* Revision 1.1 2004/06/09 13:56:47 alex |
* corrections diverses |
* |
* Revision 1.9 2003/05/06 12:49:27 alex |
* remplacement include par include_once |
* |
* Revision 1.8 2003/03/07 15:20:32 jpm |
* Correction d'une erreur de texte. |
* |
* Revision 1.7 2003/02/28 08:43:33 jpm |
* Gestion des nouvelles tables MySql carto. |
* |
* Revision 1.6 2003/02/21 13:50:19 jpm |
* Mise à jour nouvel objet Carto_Carte. |
* |
* Revision 1.5 2003/02/17 14:33:52 jpm |
* Modification pour être compatible avec la nouvelle classe carte. |
* |
* |
*/ |
?> |
/trunk/client/cartographie/langues/car_langue_fr.inc.php |
---|
New file |
0,0 → 1,96 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library is free software; you can redistribute it and/or | |
// | modify it under the terms of the GNU Lesser General Public | |
// | License as published by the Free Software Foundation; either | |
// | version 2.1 of the License, or (at your option) any later version. | |
// | | |
// | This library 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 | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser General Public | |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: car_langue_fr.inc.php,v 1.1 2004-12-15 13:31:21 alex Exp $ |
/** |
* Fichier de traduction en français de l'application inscription |
* |
* Fichier de traduction en français de l'application inscription |
* |
*@package vecam |
//Auteur original : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
//Autres auteurs : |
*@author Aucun |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.1 $ $Date: 2004-12-15 13:31:21 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
define ("CAR_NOM", "Nom") ; |
define ("CAR_PRENOM", "Prénom") ; |
define ("CAR_DATE_INS", "Date d'inscription") ; |
define ("CAR_REGION", "Région") ; |
define ("CAR_CP", "CP") ; |
define ("CAR_VILLE", "Ville") ; |
define ("CAR_PAYS", "Pays :") ; |
define ("CAR_LANGUES_PARLES", "Langues parlés :") ; |
define ("CAR_EMAIL", "E-mail :") ; |
define ("CAR_MOT_DE_PASSE", "Mot de passe :") ; |
define ("CAR_REPETE_MOT_DE_PASSE", "Répéter le mot de passe :") ; |
define ("CAR_RETABLIR", "Rétablir") ; |
define ("CAR_VALIDER", "Valider") ; |
define ("CAR_MOTS_DE_PASSE_DIFFERENTS", "Les mots de passe sont différents !") ; |
define ("CAR_EMAIL_REQUIS", "Vous devez saisir un email.") ; |
define ("CAR_MOT_DE_PASSE_REQUIS", "Vous devez saisir un mot de passe.") ; |
define ("CAR_MAIL_INCORRECT", "L'email doit avoir une forme correcte, utilisateur@domaine.ext") ; |
define ("CAR_NOTE_REQUIS", "Indique les champs requis") ; |
define ("CAR_MODIFIER_INSCRIPTION", "Modifier votre inscription") ; |
define ("CAR_SUPPRIMER_INSCRIPTION", "Supprimer votre inscription") ; |
define ("CAR_MESSAGE_BIENVENU", "Vous êtes inscrit à I-Jumelage") ; |
define ("CAR_DECONNEXION", 'Déconnexion') ; |
define ("CAR_INSCRIPTION", 'Inscription') ; |
define ("CAR_TEXTE_PERDU", "Si vous avez perdu votre mot de passe, indiquer ". |
"votre adresse email dans le champs login ci-dessus et cliquez sur \"Valider\"") ; |
define ("CAR_CHECK_UNCHECK", "Cocher les cases pour sélectionner votre destinataire ou cocher / décocher tout") ; |
define ("CAR_ENVOYER_MAIL", "Envoyer un email") ; |
define ("CAR_SUJET", "Sujet") ; |
define ("CAR_MESSAGE", "Message") ; |
define ("CAR_ENVOYER", "Envoyer") ; |
define ("CAR_LABEL_PROJET", "au serveur de ressources pour les réseaux") ; |
define ("CAR_CLIQUER", "Cliquez sur une zone de la carte pour zoomer.") ; |
define ("CAR_COULEUR", "La couleur est proportionnelle au nombre d'inscrits.") ; |
define ("CAR_AVERTISSEMENT_TITRE", "Avertissement et déni de responsabilité") ; |
define ("CAR_AVERTISSEMENT", "La représentation et l'utilisation des frontières, des noms géographiques et autres ". |
" données employés sur les cartes et utilisés dans les listes,". |
" les tableaux, les documents et les bases de données de ce site ne sont pas garanties sans ". |
"erreurs, de même qu'elles n'engagent pas la responsabilité des auteurs de ce site ni ". |
"n'impliquent de reconnaissance officielle de leur part.") ; |
define ("CAR_MONDE", "Monde") ; |
define ("CAR_CLIQUER_ACCEDER", "Cliquer sur la carte pour zoomer ou accéder aux informations ") ; |
define ("CAR_LAIUS_INSCRIPTION", "Pour consulter la liste des inscrits â i-jumelages, vous devez être inscrit comme membre de la communauté des i-jumelages.") ; |
define ("CAR_S_INSCRIRE", "S'inscrire") ; |
define ("CAR_MESSAGE_ENVOYE", "Votre message a été envoyé") ; |
define ("CAR_MESSAGE_ENVOYE_A", "Ce message a été envoyé à") ; // pas d'entités HTML, c'est pour un mail |
define ("CAR_AUCUN_INSCRIT", "aucun inscrit") ; |
define ("CAR_INSCRIT", "inscrits") ; |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.1 2004/06/18 08:49:57 alex |
* version initiale, pour vecam |
* |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |
/trunk/client/cartographie/cartographie.css |
---|
New file |
0,0 → 1,101 |
/* |
+----------------------------------------------------------------------------+ |
| cartographie.css | |
+----------------------------------------------------------------------------+ |
| Copyright (c) 2004 Tela Botanica | |
+----------------------------------------------------------------------------+ |
| Feuille de style specifique a l'application cartographie de Tela Botanica | |
+----------------------------------------------------------------------------+ |
| Auteur : Tamara LE BOURG <tamara@tela-botanica.org> | |
+----------------------------------------------------------------------------+ |
*/ |
#carto { |
text-align:left; |
} |
#table_carto { |
border: 1px solid #E8AE3B; |
border-collapse: collapse; |
width:100%; |
} |
.avertissement_carto { |
font-size:10px; |
font-family:Verdana, Sans-serif; |
margin: 10px 77px 0 0; |
text-align:justify; |
} |
a.chemin_carto { |
text-decoration:none; |
font-weight:bold; |
} |
th { |
border: 1px 0px 1px 0px solid #E8AE3B; |
background-color: #FFCD9B; |
color: #775522; |
padding: 2px; |
} |
ul.liste_carto { |
margin: 0px; |
} |
li.liste_carto { |
list-style-type: none; |
margin: 0px; |
} |
.ligne_impaire { |
background-color: #FFFFFF; |
font-size: 85%; |
border: none; |
padding: 2px; |
} |
.ligne2_impaire { |
background-color: #FFFFFF; |
font-size: 85%; |
border: none; |
padding: 2px; |
} |
.ligne_paire { |
background-color: #FFEBD7; |
font-size: 85%; |
border: none; |
padding: 2px; |
} |
.ligne2_paire { |
background-color: #FFEBD7; |
font-size: 85%; |
border: none; |
padding: 2px; |
} |
.titre1_carto { |
font-family: Arial, Verdana, Helvetica, sans-serif; |
margin: 3px 0; |
font-size: 130%; |
margin-top: 1em; |
} |
.titre2_carto { |
font-family: Arial, Verdana, Helvetica, sans-serif; |
margin: 3px 0; |
font-size: 110%; |
margin-top: 1em; |
} |
.carto_erreur { |
color: #CC6633; |
font-weight: bold; |
text-decoration: blink; |
} |
/trunk/client/cartographie/liste_inscrit.php |
---|
New file |
0,0 → 1,210 |
<? |
// +--------------------------------------------------------------------------------+ |
// | liste_inscrit.php | |
// +--------------------------------------------------------------------------------+ |
// | Copyright (c) 2002 | |
// +--------------------------------------------------------------------------------+ |
// | | |
// +--------------------------------------------------------------------------------+ |
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org> | |
// +--------------------------------------------------------------------------------+ |
// |
// $Id: liste_inscrit.php,v 1.1 2004-12-15 13:33:03 alex Exp $ |
global $HTTP_USER_AGENT; |
$classe_titre = 'titlePage' ; |
$javascript = "function confirmer () |
{ |
if (window.confirm ('Cliquez sur OK pour confirmer.')) { |
window.formmail.submit(); |
} |
} |
function setCheckboxes(the_form) |
{ |
var do_check=document.forms[the_form].elements['selecttotal'].checked; |
var elts = document.forms[the_form].elements['select[]']; |
var elts_cnt = (typeof(elts.length) != 'undefined') |
? elts.length |
: 0; |
if (elts_cnt) { |
for (var i = 0; i < elts_cnt; i++) { |
elts[i].checked = do_check; |
} // Fin for |
} |
else { |
elts.checked = do_check; |
} // Fin if... else |
return true; |
} // Fin de la fonction 'setCheckboxes()'"; |
GEN_stockerCodeScript($javascript); |
$url = CAR_URL ; |
$res = ""; |
$tabmonde = explode ('*',$monde->historique); |
// Premier cas, on vient de cliquer sur un pays qui n'est pas |
// la France, on affiche les adhérents de ce pays |
if (count($tabmonde) == 3) { |
$argument = $tabmonde[2]; |
$query = "select * from carto_PAYS where CP_ID_pays='$argument'"; |
$result = $GLOBALS['car_db']->query($query); |
if (DB::isError($resultat)) { |
die ($result->getMessage().'<br />'.$result->getDebugInfo()) ; |
} |
$row = $result->fetchRow(DB_FETCHMODE_OBJECT) ; |
$pays = $row->CP_Intitule_pays; |
$monde->nom = $monde->nom.'*'.$pays; |
$tabonglet = explode ('*', $monde->historique); |
$tabnom = explode ('*', $monde->nom); |
$res .= "<b>\n"; |
foreach ($tabonglet as $key => $value) { |
if ($key == 0) { |
$chemin = $value; |
$value = 'monde'; |
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
else if ($key == (count($tabonglet)-1)) { |
$res .= "<a class=\"chemin_carto\"> > $pays</a>"; |
} |
else { |
$chemin .= '*'.$value; |
$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= "</b>\n"; |
$capitale = $row->CP_Intitule_capitale; |
$query2 = " SELECT count(".CAR_CHAMPS_ID.") as nbr". |
" from ".CAR_ANNUAIRE. |
" where ".CAR_CHAMPS_CE_PAYS."='$argument'"; |
$result2 = $GLOBALS['car_db']->query($query2); |
if (DB::isError($resultat2)) { |
die ($resultat2->getMessage().'<br />'.$resultat2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT) ; |
$res .= "<div class=\"$classe_titre\">$pays ($capitale) : " ; |
if ($row2->nbr == 0) { |
$res .= "aucun inscrit ".CAR_LABEL_PROJET ; |
} else if ($row2->nbr == 1) { |
$res .= $row2->nbr." inscrit ".CAR_LABEL_PROJET ; |
} else { |
$res .= $row2->nbr." inscrits ".CAR_LABEL_PROJET ; |
} |
$res .= "</div>\n"; |
if (!$GLOBALS['car_auth']->getAuth()) { |
$res .= AUTH_formulaire_login(); |
} else { |
$requete = "select * from ".CAR_ANNUAIRE. |
" where ".CAR_CHAMPS_CE_PAYS."='$argument'". |
" order by ".CAR_CHAMPS_NOM.", ".CAR_CHAMPS_PRENOM; |
$res .= listes_inscrit ($requete, $url, $select, $argument, $GLOBALS['car_db']) ; |
if ($mailer==1) { |
if (!is_array($select)) { |
$res .= "<div>".CAR_NO_DESTINATAIRE."</div>"; |
} else { |
$res .= "<div class=\"$classe_titre\">".CAR_MESSAGE_ENVOYE."</div>\n" ; |
envoie_mail() ; |
} |
} else { |
$res .= carto_texte_cocher() ; |
} |
$res .= carto_formulaire($titre_mail, $corps) ; |
} |
// 2 ème cas, on vient de cliquer sur un département français |
} else if (count($tabmonde) == 4) { |
$argument = $tabmonde[3]; |
$query = "select * from gen_FRENCH_DPT where GFD_ID='$argument'"; |
$result = $GLOBALS['car_db']->query($query); |
if (DB::isError($resultat)) { |
die ($result->getMessage() .'<br />'.$result->getDebugInfo()); |
} |
$row = $result->fetchRow(DB_FETCHMODE_OBJECT); |
$nom = $row->GFD_NAME; |
$tabonglet=explode ('*', $monde->historique); |
$tabnom=explode ('*', $monde->nom); |
$res.="<div><b>\n"; |
foreach ($tabonglet as $key=>$value) { |
if ($key==0) { |
$chemin=$value; |
$value='monde'; |
$res.= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
else if ($key==(count($tabonglet)-1)) { |
$res.="<a class=\"chemin_carto\"> > $nom</a>"; |
} |
else { |
$chemin.='*'.$value; |
$res.= "<a class=\"chemin_carto\" href=\"".$monde->url."&historique_cartes=$chemin\"> > ".$tabnom[$key]."</a>"; |
} |
} |
$res .= "</b></div>\n"; |
$query2 = " SELECT count(".CAR_CHAMPS_ID.") as nbr". |
" FROM ".CAR_ANNUAIRE. |
" WHERE ".CAR_CHAMPS_DPT." = '$argument'". |
" AND ".CAR_CHAMPS_CE_PAYS."='fr'"; |
$result2 = $GLOBALS['car_db']->query($query2); |
if (DB::isError($resultat2)) { |
die ($resultat2->getMessage().'<br />'.$resultat2->getDebugInfo()) ; |
} |
$row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT); |
$res .= "<div class=\"$classe_titre\">$nom : " ; |
if ($row2->nbr == 0) { |
$res .= CAR_AUCUN_INSCRIT." ".CAR_LABEL_PROJET ; |
} |
else if ($row2->nbr == 1) { |
$res .= $row2->nbr." ".CAR_INSCRIT." ".CAR_LABEL_PROJET ; |
} |
else { |
$res .= $row2->nbr." ".CAR_INSCRIT."s ".CAR_LABEL_PROJET ; |
} |
$res .= "</div>\n"; |
if (!$GLOBALS['car_auth']->getAuth()) { |
$res .= AUTH_formulaire_login(); |
} else { |
$requete = "SELECT * FROM ".CAR_ANNUAIRE. |
" WHERE ".CAR_CHAMPS_DPT." = '$argument'". |
" AND ".CAR_CHAMPS_CE_PAYS."='fr'". |
" ORDER BY ".CAR_CHAMPS_NOM.", ".CAR_CHAMPS_PRENOM; |
$res .= listes_inscrit ($requete, $url, $select, $argument, $GLOBALS['car_db'], 'france') ; |
if ($mailer==1) { |
if (!is_array($select)) { |
$res.= CAR_NO_DESTINATAIRE; |
} else { |
$res .= "<div class=\"$classe_titre\">".CAR_MESSAGE_ENVOYE."</div>\n" ; |
envoie_mail() ; |
} |
} else { |
$res .=carto_texte_cocher() ; |
} |
$res .= carto_formulaire($titre_mail, $corps) ; |
} |
} |
$res.="</div>"; |
?> |