Subversion Repositories Applications.papyrus

Rev

Rev 1298 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1298 Rev 1367
1
<?php
1
<?php
2
 
2
 
3
//vim: set expandtab tabstop=4 shiftwidth=4: 
3
//vim: set expandtab tabstop=4 shiftwidth=4: 
4
// +-----------------------------------------------------------------------------------------------+
4
// +-----------------------------------------------------------------------------------------------+
5
// | PHP version 4.0                                                                               |
5
// | PHP version 4.0                                                                               |
6
// +-----------------------------------------------------------------------------------------------+
6
// +-----------------------------------------------------------------------------------------------+
7
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group                                      |
7
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group                                      |
8
// +-----------------------------------------------------------------------------------------------+
8
// +-----------------------------------------------------------------------------------------------+
9
// | This source file is subject to version 2.0 of the PHP license,                                | 
9
// | This source file is subject to version 2.0 of the PHP license,                                | 
10
// | that is bundled with this package in the file LICENSE, and is                                 |
10
// | that is bundled with this package in the file LICENSE, and is                                 |
11
// | available at through the world-wide-web at                                                    |
11
// | available at through the world-wide-web at                                                    |
12
// | http://www.php.net/license/2_02.txt.                                                          |
12
// | http://www.php.net/license/2_02.txt.                                                          |
13
// | If you did not receive a copy of the PHP license and are unable to                            |
13
// | If you did not receive a copy of the PHP license and are unable to                            |
14
// | obtain it through the world-wide-web, please send a note to                                   |
14
// | obtain it through the world-wide-web, please send a note to                                   |
15
// | license@php.net so we can mail you a copy immediately.                                        |
15
// | license@php.net so we can mail you a copy immediately.                                        |
16
// +-----------------------------------------------------------------------------------------------+
16
// +-----------------------------------------------------------------------------------------------+
17
/**
17
/**
18
* Fichier regroupant toutes les classes de la carto
18
* Fichier regroupant toutes les classes de la carto
19
*
19
*
20
*Toutes les classe de la carto sont disponibles dans ce fichier.
20
*Toutes les classe de la carto sont disponibles dans ce fichier.
21
*
21
*
22
*@package carto
22
*@package carto
23
//Auteur original :
23
//Auteur original :
24
*@author        Nicolas MATHIEU
24
*@author        Nicolas MATHIEU
25
//Autres auteurs :
25
//Autres auteurs :
26
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
26
*@author        Alexandre GRANIER <alexandre@tela-botanica.org>
27
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
27
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
28
*@copyright     Tela-Botanica 2000-2003
28
*@copyright     Tela-Botanica 2000-2003
29
*@version       01 juillet 2002
29
*@version       01 juillet 2002
30
// +-----------------------------------------------------------------------------------------------+
30
// +-----------------------------------------------------------------------------------------------+
31
//
31
//
32
// $Id: lib.carto.php,v 1.8 2007-04-11 08:30:12 neiluj Exp $
32
// $Id: lib.carto.php,v 1.9 2007-04-20 14:16:45 alexandre_tb Exp $
33
// FICHIER : $RCSfile: lib.carto.php,v $
33
// FICHIER : $RCSfile: lib.carto.php,v $
34
// AUTEUR  : $Author: neiluj $
34
// AUTEUR  : $Author: alexandre_tb $
35
// VERSION : $Revision: 1.8 $
35
// VERSION : $Revision: 1.9 $
36
// DATE    : $Date: 2007-04-11 08:30:12 $
36
// DATE    : $Date: 2007-04-20 14:16:45 $
37
//
37
//
38
// +-----------------------------------------------------------------------------------------------+
38
// +-----------------------------------------------------------------------------------------------+
39
// A FAIRE :
39
// A FAIRE :
40
// 1.-Rendre cette classe indépendante de l'arborescence du site.
40
// 1.-Rendre cette classe indépendante de l'arborescence du site.
41
//      On trouve encore des urls ou des chemins d'accé au fichier codé en dur dans l'appli
41
//      On trouve encore des urls ou des chemins d'accé au fichier codé en dur dans l'appli
42
//      Il faudrait pouvoir les paramétrés dans la classe.
42
//      Il faudrait pouvoir les paramétrés dans la classe.
43
// 2.- Supprimer l'attribut $this->historiques qui doit être devenu complétement obscoléte et le 
43
// 2.- Supprimer l'attribut $this->historiques qui doit être devenu complétement obscoléte et le 
44
//      remplacer par $this->historique_cartes
44
//      remplacer par $this->historique_cartes
45
// 3.- Renomer $this->liste_zone_carte en quelque chose de plus parlant...
45
// 3.- Renomer $this->liste_zone_carte en quelque chose de plus parlant...
46
*/
46
*/
47
//Inclusion d'un autre fichier de librairie
47
//Inclusion d'un autre fichier de librairie
48
include_once 'lib.couleur.php';
48
include_once 'lib.couleur.php';
49
 
49
 
50
//Sert seulement en interne pour le débogage des requetes SQL
50
//Sert seulement en interne pour le débogage des requetes SQL
51
$NOM_FICHIER = 'lib.carto.php';
51
$NOM_FICHIER = 'lib.carto.php';
52
 
52
 
53
//==================================================================================================
53
//==================================================================================================
54
// La classe Carto_HistoriqueCarte sert à pouvoir afficher les liens avec les carte précédentes
54
// La classe Carto_HistoriqueCarte sert à pouvoir afficher les liens avec les carte précédentes
55
// On accède à cette fonctionnalité grâce à la méthode afficherHistoriqueCarte()
55
// On accède à cette fonctionnalité grâce à la méthode afficherHistoriqueCarte()
56
// L'objet Carto_HistoriqueCarte recoit en parametres : 
56
// L'objet Carto_HistoriqueCarte recoit en parametres : 
57
//      -la généalogie du niveau ou on en est (du type monde*europe*france )
57
//      -la généalogie du niveau ou on en est (du type monde*europe*france )
58
//      -l'url du document
58
//      -l'url du document
59
//      -en option :    *le caractere de separation (par defaut c'est >)
59
//      -en option :    *le caractere de separation (par defaut c'est >)
60
//                      *la classe css des liens
60
//                      *la classe css des liens
61
//===================================================================================================
61
//===================================================================================================
62
 
62
 
63
class Carto_HistoriqueCarte 
63
class Carto_HistoriqueCarte 
64
{
64
{
65
    var $historique;
65
    var $historique;
66
    var $url;
66
    var $url;
67
    var $caractere_separation;
67
    var $caractere_separation;
68
    var $class_css;
68
    var $class_css;
69
    var $nom;
69
    var $nom;
70
 
70
 
71
    function Carto_HistoriqueCarte ($objet_carte, $caractere = '&gt;', $class = '')
71
    function Carto_HistoriqueCarte ($objet_carte, $caractere = '&gt;', $class = '')
72
    {
72
    {
73
        global $GS_GLOBAL;
73
        global $GS_GLOBAL;
74
 
74
 
75
        $this->historique = $objet_carte->historique;
75
        $this->historique = $objet_carte->historique;
76
        $this->url = $objet_carte->url;
76
        $this->url = $objet_carte->url;
77
        $this->nom = $objet_carte->nom;
77
        $this->nom = $objet_carte->nom;
78
        unset ($objet_carte);
78
        unset ($objet_carte);
79
        $this->caractere_separation = $caractere;
79
        $this->caractere_separation = $caractere;
80
        $this->class_css = $class;
80
        $this->class_css = $class;
81
    }//Fin du constructeur Carto_HistoriqueCarte().
81
    }//Fin du constructeur Carto_HistoriqueCarte().
82
    
82
    
83
    function afficherHistoriqueCarte () 
83
    function afficherHistoriqueCarte () 
84
    {
84
    {
85
        $res='<div style="float:left;">'.INS_ECHELLE;
85
        $res='<div style="float:left;">'.INS_ECHELLE;
86
        $tabonglet = explode ('*', $this->historique);
86
        $tabonglet = explode ('*', $this->historique);
87
        $tabnom = explode ('*', $this->nom);
87
        $tabnom = explode ('*', $this->nom);
88
        foreach ($tabonglet as $key=>$value) {
88
        foreach ($tabonglet as $key=>$value) {
89
            if ($key == 0) {
89
            if ($key == 0) {
90
                $chemin = $value;
90
                $chemin = $value;
91
            }
91
            }
92
            else {
92
            else {
93
                $chemin .= '*'.$value;
93
                $chemin .= '*'.$value;
94
            }
94
            }
95
            
95
            
96
            $res.= '<a ';
96
            $res.= '<a ';
97
            
97
            
98
            if (!empty($this->class_css)) {
98
            if (!empty($this->class_css)) {
99
                $res.='class="'.$this->class_css.'" ';
99
                $res.='class="'.$this->class_css.'" ';
100
            }
100
            }
101
            
101
            
102
            $res.='href="'.$this->url.'&amp;historique_cartes='.$chemin.'">&nbsp;'.$this->caractere_separation.'&nbsp;'.$tabnom[$key].'</a>';
102
            $res.='href="'.$this->url.'&amp;historique_cartes='.$chemin.'">&nbsp;'.$this->caractere_separation.'&nbsp;'.$tabnom[$key].'</a>';
103
        }
103
        }
104
        $res.= '</div>'."\n";
104
        $res.= '</div>'."\n";
105
        return $res;
105
        return $res;
106
        
106
        
107
    }//Fin de la méthode afficherHistoriqueCarte().
107
    }//Fin de la méthode afficherHistoriqueCarte().
108
 
108
 
109
}//Fin de la classe Carto_HistoriqueCarte.
109
}//Fin de la classe Carto_HistoriqueCarte.
110
 
110
 
111
//================================================================================================
111
//================================================================================================
112
//La classe Action sert a definir les paramètres nécessaires pour recueillir l'action a réaliser en 
112
//La classe Action sert a definir les paramètres nécessaires pour recueillir l'action a réaliser en 
113
// fonction des coordonnées du point, du masque et du niveau.
113
// fonction des coordonnées du point, du masque et du niveau.
114
//Elle remplace la fonction get_cartoAction() que l'on peut trouver dans le fichier carto_commun.php
114
//Elle remplace la fonction get_cartoAction() que l'on peut trouver dans le fichier carto_commun.php
115
//des différentes application utilisant la carto.
115
//des différentes application utilisant la carto.
116
// Les champs a renseigner sont les suivants :
116
// Les champs a renseigner sont les suivants :
117
//   -le nom de la table ($nom_table_carto_action) où sont stokée les actions à réalisées 
117
//   -le nom de la table ($nom_table_carto_action) où sont stokée les actions à réalisées 
118
//      en fonction des couleurs
118
//      en fonction des couleurs
119
//   -les 5 champs principaux de la table :
119
//   -les 5 champs principaux de la table :
120
//      -l'identifiant de la zone géographique (un nom, un numéro ou une abréviation) -> $nom_champ_cle 
120
//      -l'identifiant de la zone géographique (un nom, un numéro ou une abréviation) -> $nom_champ_cle 
121
//      -les couleurs -> $nom_champ_rouge, $nom_champ_vert, $nom_champ_bleu
121
//      -les couleurs -> $nom_champ_rouge, $nom_champ_vert, $nom_champ_bleu
122
//      -l'action -> $nom_champ_action
122
//      -l'action -> $nom_champ_action
123
// Elle possède une seule méthode : get_cartoAction().
123
// Elle possède une seule méthode : get_cartoAction().
124
//================================================================================================
124
//================================================================================================
125
 
125
 
126
class Carto_Action
126
class Carto_Action
127
{
127
{
128
        var $_table_zone_geo;
128
        var $_table_zone_geo;
129
        var $_id_zone_geo_zone;
129
        var $_id_zone_geo_zone;
130
        var $_rouge;
130
        var $_rouge;
131
        var $_vert;
131
        var $_vert;
132
        var $_bleu;
132
        var $_bleu;
133
        var $_table_action;
133
        var $_table_action;
134
        var $_id_carte_action;
134
        var $_id_carte_action;
135
        var $_id_zone_geo_action;
135
        var $_id_zone_geo_action;
136
        var $_type_zone_geo_action;
136
        var $_type_zone_geo_action;
137
        var $_action;
137
        var $_action;
138
        var $_id_carte_destination;
138
        var $_id_carte_destination;
139
    
139
    
140
    function Carto_Action ($table_zone_geo, $zone_chp_id_zone, $chp_rouge,
140
    function Carto_Action ($table_zone_geo, $zone_chp_id_zone, $chp_rouge,
141
                                    $chp_vert, $chp_bleu, $table_carto_action, $action_chp_id_carte, $action_chp_id_zone,
141
                                    $chp_vert, $chp_bleu, $table_carto_action, $action_chp_id_carte, $action_chp_id_zone,
142
                                    $action_chp_type_zone, $chp_action, $chp_destination) 
142
                                    $action_chp_type_zone, $chp_action, $chp_destination) 
143
    {
143
    {
144
        $this->_table_zone_geo = $table_zone_geo;
144
        $this->_table_zone_geo = $table_zone_geo;
145
        $this->_id_zone_geo_zone = $zone_chp_id_zone;
145
        $this->_id_zone_geo_zone = $zone_chp_id_zone;
146
        $this->_rouge = $chp_rouge;
146
        $this->_rouge = $chp_rouge;
147
        $this->_vert = $chp_vert;
147
        $this->_vert = $chp_vert;
148
        $this->_bleu = $chp_bleu;
148
        $this->_bleu = $chp_bleu;
149
        $this->_table_action = $table_carto_action;
149
        $this->_table_action = $table_carto_action;
150
        $this->_id_carte_action = $action_chp_id_carte;
150
        $this->_id_carte_action = $action_chp_id_carte;
151
        $this->_id_zone_geo_action = $action_chp_id_zone;
151
        $this->_id_zone_geo_action = $action_chp_id_zone;
152
        $this->_type_zone_geo_action = $action_chp_type_zone;
152
        $this->_type_zone_geo_action = $action_chp_type_zone;
153
        $this->_action = $chp_action;
153
        $this->_action = $chp_action;
154
        $this->_id_carte_destination = $chp_destination;
154
        $this->_id_carte_destination = $chp_destination;
155
    }
155
    }
156
    
156
    
157
    //**********************************************************************************************************
157
    //**********************************************************************************************************
158
    // Méthode get_cartoAction($imageX, $imageY, $masque, $id_carte)
158
    // Méthode get_cartoAction($imageX, $imageY, $masque, $id_carte)
159
    
159
    
160
    // Elle renvoit l'action a réaliser.
160
    // Elle renvoit l'action a réaliser.
161
    // Nous passons les paramètres suivant :     
161
    // Nous passons les paramètres suivant :     
162
    //      -les coordonnees du point ($imageX et $imageY)
162
    //      -les coordonnees du point ($imageX et $imageY)
163
    //      -le masque pour recuperer la couleur ($masque)
163
    //      -le masque pour recuperer la couleur ($masque)
164
    //      -l'identifiant de la carte où nous nous trouvons ($id_carte)
164
    //      -l'identifiant de la carte où nous nous trouvons ($id_carte)
165
    //**********************************************************************************************************
165
    //**********************************************************************************************************
166
    
166
    
167
    function _consulterActionImage($imageX, $imageY, $masque, $id_carte) 
167
    function _consulterActionImage($imageX, $imageY, $masque, $id_carte) 
168
    {
168
    {
169
        // Nous récuperons les valeurs RVB de la couleur sur laquelle l'utilisateur a cliqué.
169
        // Nous récuperons les valeurs RVB de la couleur sur laquelle l'utilisateur a cliqué.
170
        // Les valeurs RVB sont stockées dans le tableau associatif $valeurs_RVB.
170
        // Les valeurs RVB sont stockées dans le tableau associatif $valeurs_RVB.
171
        
171
        
172
        $masque_courant = imagecreatefrompng($masque);
172
        $masque_courant = imagecreatefrompng($masque);
173
        $index_couleur = imagecolorat($masque_courant,$imageX,$imageY);
173
        $index_couleur = imagecolorat($masque_courant,$imageX,$imageY);
174
        $valeurs_RVB = imagecolorsforindex($masque_courant, $index_couleur);
174
        $valeurs_RVB = imagecolorsforindex($masque_courant, $index_couleur);
175
        
175
        
176
        // Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
176
        // Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
177
        // du champ "action", afin de savoir quoi faire.
177
        // du champ "action", afin de savoir quoi faire.
178
        $requete = 
178
        $requete = 
179
        'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
179
        'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
180
        ' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
180
        ' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
181
        ' WHERE '.$this->_table_zone_geo.'.'.$this->_rouge.' = '.$valeurs_RVB['red'].
181
        ' WHERE '.$this->_table_zone_geo.'.'.$this->_rouge.' = '.$valeurs_RVB['red'].
182
        ' AND '.$this->_table_zone_geo.'.'.$this->_vert.' = '.$valeurs_RVB['green'].
182
        ' AND '.$this->_table_zone_geo.'.'.$this->_vert.' = '.$valeurs_RVB['green'].
183
        ' AND '.$this->_table_zone_geo.'.'.$this->_bleu.' = '.$valeurs_RVB['blue'].
183
        ' AND '.$this->_table_zone_geo.'.'.$this->_bleu.' = '.$valeurs_RVB['blue'].
184
        ' AND '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
184
        ' AND '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
185
        ' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
185
        ' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
186
        
186
        
187
        $resultat=mysql_query($requete) or die('
187
        $resultat=mysql_query($requete) or die('
188
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
188
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
189
            '<b>Requete : </b>'.$requete.
189
            '<b>Requete : </b>'.$requete.
190
            '<br/><br/><b>Erreur : </b>'.mysql_error());
190
            '<br/><br/><b>Erreur : </b>'.mysql_error());
191
        
191
        
192
        $ligne = mysql_fetch_object ($resultat);
192
        $ligne = mysql_fetch_object ($resultat);
193
        
193
        
194
        if (mysql_num_rows ($resultat) != 0) {
194
        if (mysql_num_rows ($resultat) != 0) {
195
            
195
            
196
            $chp_id_zone_geo = $this->_id_zone_geo_action;
196
            $chp_id_zone_geo = $this->_id_zone_geo_action;
197
            $chp_action = $this->_action;
197
            $chp_action = $this->_action;
198
            $chp_id_carte_destination = $this->_id_carte_destination;
198
            $chp_id_carte_destination = $this->_id_carte_destination;
199
            
199
            
200
            $action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
200
            $action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
201
            $action['type_action'] = $ligne->$chp_action;
201
            $action['type_action'] = $ligne->$chp_action;
202
            $action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
202
            $action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
203
            
203
            
204
            return $action;
204
            return $action;
205
        }
205
        }
206
    }//Fin de la méthode _consulterActionImage().
206
    }//Fin de la méthode _consulterActionImage().
207
    
207
    
208
    //**********************************************************************************************************
208
    //**********************************************************************************************************
209
    // Méthode _consulterActionListe($id_zone_carte, $id_carte)
209
    // Méthode _consulterActionListe($id_zone_carte, $id_carte)
210
    
210
    
211
    // Elle renvoit l'action a réaliser.
211
    // Elle renvoit l'action a réaliser.
212
    // Nous passons les paramètres suivant :     
212
    // Nous passons les paramètres suivant :     
213
    //      -l'identifiant de la zone que l'on veut afficher
213
    //      -l'identifiant de la zone que l'on veut afficher
214
    //      -l'identifiant de la carte où nous nous trouvons ($id_carte)
214
    //      -l'identifiant de la carte où nous nous trouvons ($id_carte)
215
    //**********************************************************************************************************
215
    //**********************************************************************************************************
216
    
216
    
217
    function _consulterActionListe($id_zone_carte, $id_carte) 
217
    function _consulterActionListe($id_zone_carte, $id_carte) 
218
    {
218
    {
219
        // Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
219
        // Nous effectuons une requete dans la table carto_ACTION pour récupérer la valeur
220
        // du champ "action", afin de savoir quoi faire.
220
        // du champ "action", afin de savoir quoi faire.
221
        $requete = 
221
        $requete = 
222
        'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
222
        'SELECT '.$this->_action.', '.$this->_id_carte_destination.', '.$this->_id_zone_geo_action.
223
        ' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
223
        ' FROM '.$this->_table_action.', '.$this->_table_zone_geo.
224
        ' WHERE '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
224
        ' WHERE '.$this->_table_action.'.'.$this->_id_zone_geo_action.' = '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.
225
        ' AND '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.' = "'.$id_zone_carte.'"'.
225
        ' AND '.$this->_table_zone_geo.'.'.$this->_id_zone_geo_zone.' = "'.$id_zone_carte.'"'.
226
        ' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
226
        ' AND '.$this->_table_action.'.'.$this->_id_carte_action.' = "'.$id_carte.'"';
227
        
227
        
228
        $resultat=mysql_query($requete) or die('
228
        $resultat=mysql_query($requete) or die('
229
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
229
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
230
            '<b>Requete : </b>'.$requete.
230
            '<b>Requete : </b>'.$requete.
231
            '<br/><br/><b>Erreur : </b>'.mysql_error());
231
            '<br/><br/><b>Erreur : </b>'.mysql_error());
232
        
232
        
233
        $ligne = mysql_fetch_object ($resultat);
233
        $ligne = mysql_fetch_object ($resultat);
234
        
234
        
235
        if (mysql_num_rows ($resultat) != 0) {
235
        if (mysql_num_rows ($resultat) != 0) {
236
            
236
            
237
            $chp_id_zone_geo = $this->_id_zone_geo_action;
237
            $chp_id_zone_geo = $this->_id_zone_geo_action;
238
            $chp_action = $this->_action;
238
            $chp_action = $this->_action;
239
            $chp_id_carte_destination = $this->_id_carte_destination;
239
            $chp_id_carte_destination = $this->_id_carte_destination;
240
            
240
            
241
            $action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
241
            $action['id_zone_geo'] = $ligne->$chp_id_zone_geo;
242
            $action['type_action'] = $ligne->$chp_action;
242
            $action['type_action'] = $ligne->$chp_action;
243
            $action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
243
            $action['id_carte_destination'] = $ligne->$chp_id_carte_destination;
244
            
244
            
245
            return $action;
245
            return $action;
246
        }
246
        }
247
    }//Fin de la méthode get_cartoAction().
247
    }//Fin de la méthode get_cartoAction().
248
}//Fin de la classe Carto_Action.
248
}//Fin de la classe Carto_Action.
249
 
249
 
250
//================================================================================================
250
//================================================================================================
251
// L'objet carte est l'objet principal de la carto. C'est lui possede qui possède les methodes
251
// L'objet carte est l'objet principal de la carto. C'est lui possede qui possède les methodes
252
//pour colorier les cartes.
252
//pour colorier les cartes.
253
// Il faut lui donner les parametres suivants :
253
// Il faut lui donner les parametres suivants :
254
//      -le nom de la premier carte ($id).
254
//      -le nom de la premier carte ($id).
255
//      -le nom du masque ($masque).
255
//      -le nom du masque ($masque).
256
//      -le nom du fond de carte a colorier ($fond).
256
//      -le nom du fond de carte a colorier ($fond).
257
//      -le tableau $info_table_couleur : il contient les renseignements concernant la table des couleurs ainsi
257
//      -le tableau $info_table_couleur : il contient les renseignements concernant la table des couleurs ainsi
258
//       qu'un autre tableau dans lequel figure le nombre d'elements par zone.
258
//       qu'un autre tableau dans lequel figure le nombre d'elements par zone.
259
// L'objet comporte deux methodes principales :
259
// L'objet comporte deux methodes principales :
260
//      -'ajouterFils()' qui permet d'ajouter les cartes de niveau inferieur.
260
//      -'ajouterFils()' qui permet d'ajouter les cartes de niveau inferieur.
261
//      -'donnerFormulaireImage()' qui lance l'action a faire en fonction de l'action de l'utilisateur.
261
//      -'donnerFormulaireImage()' qui lance l'action a faire en fonction de l'action de l'utilisateur.
262
// Il faut aussi penser a donner directement le champs url.
262
// Il faut aussi penser a donner directement le champs url.
263
//================================================================================================
263
//================================================================================================
264
 
264
 
265
class Carto_Carte 
265
class Carto_Carte 
266
{
266
{
267
    /*|=============================================================================================|*/
267
    /*|=============================================================================================|*/
268
    /*|                                LES ATTRIBUTS DE LA CLASSE                                   |*/
268
    /*|                                LES ATTRIBUTS DE LA CLASSE                                   |*/
269
    /*|---------------------------------------------------------------------------------------------|*/
269
    /*|---------------------------------------------------------------------------------------------|*/
270
    var $id;
270
    var $id;
271
    var $_id_zone_geo_carte;
271
    var $_id_zone_geo_carte;
272
    var $nom;
272
    var $nom;
273
    var $masque;
273
    var $masque;
274
    var $fond;
274
    var $fond;
275
    var $chemin;
275
    var $chemin;
276
    var $image;
276
    var $image;
277
    var $fils;
277
    var $fils;
278
    var $url;
278
    var $url;
279
    var $_info_table_zg;
279
    var $_info_table_zg;
280
    var $filiation;
280
    var $filiation;
281
    var $image_x;
281
    var $image_x;
282
    var $image_y;
282
    var $image_y;
283
    var $historique_cartes;
283
    var $historique_cartes;
284
    var $liste_zone_carte;
284
    var $liste_zone_carte;
285
    var $historique;
285
    var $historique;
286
    // La couleur dominante ( $maxiRVB ), la couleur la plus claire ($miniRVB) et la couleur
286
    // La couleur dominante ( $maxiRVB ), la couleur la plus claire ($miniRVB) et la couleur
287
    // intermédiaire précédant le maximum ( $mediumRVB ) au cas ou il y aurait un trop grand
287
    // intermédiaire précédant le maximum ( $mediumRVB ) au cas ou il y aurait un trop grand
288
    //ecart entre les deux plus grandes valeurs.
288
    //ecart entre les deux plus grandes valeurs.
289
    var $_zeroR;
289
    var $_zeroR;
290
    var $_zeroV;
290
    var $_zeroV;
291
    var $_zeroB;
291
    var $_zeroB;
292
    var $_miniR;
292
    var $_miniR;
293
    var $_miniV;
293
    var $_miniV;
294
    var $_miniB;
294
    var $_miniB;
295
    var $_mediumR;
295
    var $_mediumR;
296
    var $_mediumV;
296
    var $_mediumV;
297
    var $_mediumB;
297
    var $_mediumB;
298
    var $_maxiR;
298
    var $_maxiR;
299
    var $_maxiV;
299
    var $_maxiV;
300
    var $_maxiB;
300
    var $_maxiB;
301
    //Le type de formule mathématique permettant de colorier la carte
301
    //Le type de formule mathématique permettant de colorier la carte
302
    var $_formule_coloriage;
302
    var $_formule_coloriage;
303
    //L'action à réaliser
303
    //L'action à réaliser
304
    var $_action;
304
    var $_action;
305
 
305
 
306
    /*|=============================================================================================|*/
306
    /*|=============================================================================================|*/
307
    /*|                                LE CONSTRUCTEUR DE LA CLASSE                                 |*/
307
    /*|                                LE CONSTRUCTEUR DE LA CLASSE                                 |*/
308
    /*|---------------------------------------------------------------------------------------------|*/
308
    /*|---------------------------------------------------------------------------------------------|*/
309
    
309
    
310
    function Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $chemin, $info_table) 
310
    function Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $chemin, $info_table) 
311
    {
311
    {
312
        $this->id = $id;
312
        $this->id = $id;
313
        $this->_id_zone_geo_carte = $id_zone_geo_carte;
313
        $this->_id_zone_geo_carte = $id_zone_geo_carte;
314
        $this->nom = $nom;
314
        $this->nom = $nom;
315
        $this->masque = $chemin.$masque;
315
        $this->masque = $chemin.$masque;
316
        $this->fond = $chemin.$fond;
316
        $this->fond = $chemin.$fond;
317
        $this->chemin = $chemin;
317
        $this->chemin = $chemin;
318
        $this->_info_table_zg = $info_table;
318
        $this->_info_table_zg = $info_table;
319
        
319
        
320
        $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'],
320
        $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'],
321
                                                            'carto_ACTION', 'CA_ID_Carte', 'CA_ID_Zone_geo', 'CA_Type_zone', 'CA_Action', 'CA_ID_Carte_destination');
321
                                                            'carto_ACTION', 'CA_ID_Carte', 'CA_ID_Zone_geo', 'CA_Type_zone', 'CA_Action', 'CA_ID_Carte_destination');
322
        $this->fils = array();
322
        $this->fils = array();
323
        $this->filiation = $id;
323
        $this->filiation = $id;
324
        $this->historique_cartes = '';
324
        $this->historique_cartes = '';
325
        $this->liste_zone_carte = '';
325
        $this->liste_zone_carte = '';
326
        $this->definirCouleurs();
326
        $this->definirCouleurs();
327
        $this->definirFormuleColoriage();
327
        $this->definirFormuleColoriage();
328
    }
328
    }
329
    
329
    
330
    /*|=============================================================================================|*/
330
    /*|=============================================================================================|*/
331
    /*|                                LES METHODES PUBLIQUES                                       |*/
331
    /*|                                LES METHODES PUBLIQUES                                       |*/
332
    /*|---------------------------------------------------------------------------------------------|*/
332
    /*|---------------------------------------------------------------------------------------------|*/
333
    function definirCouleurs (
333
    function definirCouleurs (
334
        $couleur_zero_R = '255', $couleur_zero_V = '255', $couleur_zero_B = '255',
334
        $couleur_zero_R = '255', $couleur_zero_V = '255', $couleur_zero_B = '255',
335
        $couleur_mini_R = '210', $couleur_mini_V = '230', $couleur_mini_B = '210',
335
        $couleur_mini_R = '210', $couleur_mini_V = '230', $couleur_mini_B = '210',
336
        $couleur_medium_R  = '92', $couleur_medium_V = '181', $couleur_medium_B = '92',
336
        $couleur_medium_R  = '92', $couleur_medium_V = '181', $couleur_medium_B = '92',
337
        $couleur_maxi_R = '0', $couleur_maxi_V = '127', $couleur_maxi_B = '0') 
337
        $couleur_maxi_R = '0', $couleur_maxi_V = '127', $couleur_maxi_B = '0') 
338
    {
338
    {
339
        $this->_zeroR = $couleur_zero_R;
339
        $this->_zeroR = $couleur_zero_R;
340
        $this->_zeroV = $couleur_zero_V;
340
        $this->_zeroV = $couleur_zero_V;
341
        $this->_zeroB = $couleur_zero_B;
341
        $this->_zeroB = $couleur_zero_B;
342
        $this->_miniR = $couleur_mini_R;
342
        $this->_miniR = $couleur_mini_R;
343
        $this->_miniV = $couleur_mini_V;
343
        $this->_miniV = $couleur_mini_V;
344
        $this->_miniB = $couleur_mini_B;
344
        $this->_miniB = $couleur_mini_B;
345
        $this->_mediumR = $couleur_medium_R;
345
        $this->_mediumR = $couleur_medium_R;
346
        $this->_mediumV = $couleur_medium_V;
346
        $this->_mediumV = $couleur_medium_V;
347
        $this->_mediumB = $couleur_medium_B;
347
        $this->_mediumB = $couleur_medium_B;
348
        $this->_maxiR = $couleur_maxi_R;
348
        $this->_maxiR = $couleur_maxi_R;
349
        $this->_maxiV = $couleur_maxi_V;
349
        $this->_maxiV = $couleur_maxi_V;
350
        $this->_maxiB = $couleur_maxi_B;
350
        $this->_maxiB = $couleur_maxi_B;
351
    }
351
    }
352
    
352
    
353
    function definirFormuleColoriage ($nomFormuleColoriage = 'defaut') 
353
    function definirFormuleColoriage ($nomFormuleColoriage = 'defaut') 
354
    {
354
    {
355
        $this->_formule_coloriage = $nomFormuleColoriage;
355
        $this->_formule_coloriage = $nomFormuleColoriage;
356
    }
356
    }
357
    
357
    
358
    //********************************************************************************************************
358
    //********************************************************************************************************
359
    // La méthode donnerImageSimple ($objet) permet de récupérer une image non cliquable.
359
    // La méthode donnerImageSimple ($objet) permet de récupérer une image non cliquable.
360
    //*********************************************************************************************************
360
    //*********************************************************************************************************
361
    
361
    
362
    function donnerImageSimple ($objet) 
362
    function donnerImageSimple ($objet) 
363
    {
363
    {
364
        $nom_fichier_image = $this->_donnerIdUnique();
364
        $nom_fichier_image = $this->_donnerIdUnique();
365
        $objet->_lancerColoriage('', $nom_fichier_image);
365
        $objet->_lancerColoriage('', $nom_fichier_image);
366
        $res = '<img src="'.INS_CHEMIN_APPLI.'/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="image.png">';
366
        $res = '<img src="'.INS_CHEMIN_APPLI.'/bibliotheque/lib.carto.extractimg.php?fichier='.$nom_fichier_image.'" alt="image.png">';
367
        return $res;
367
        return $res;
368
    }
368
    }
369
    
369
    
370
    //********************************************************************************************************
370
    //********************************************************************************************************
371
    // La methode ajouterFils() est essentielle. Elle permet d'ajouter toutes les sous cartes voulues.
371
    // La methode ajouterFils() est essentielle. Elle permet d'ajouter toutes les sous cartes voulues.
372
    // Il faut lui indiquer, comme a la carte du niveau du dessus, son nom, le masque, le fond et info_table_couleur.
372
    // Il faut lui indiquer, comme a la carte du niveau du dessus, son nom, le masque, le fond et info_table_couleur.
373
    // On a ainsi une inclusion d'objets les uns dans les autres.
373
    // On a ainsi une inclusion d'objets les uns dans les autres.
374
    //*********************************************************************************************************
374
    //*********************************************************************************************************
375
    
375
    
376
    function ajouterFils ($id, $id_zone_geo_carte, $nom, $masque, $fond, $info_table) 
376
    function ajouterFils ($id, $id_zone_geo_carte, $nom, $masque, $fond, $info_table) 
377
    {
377
    {
378
        $this->fils[$id] = new Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $this->chemin, $info_table);
378
        $this->fils[$id] = new Carto_Carte ($id, $id_zone_geo_carte, $nom, $masque, $fond, $this->chemin, $info_table);
379
        //Si on ajoute à la carte du monde comme fils celle de l'europe, alors
379
        //Si on ajoute à la carte du monde comme fils celle de l'europe, alors
380
        //on aura comme valeur pour $this->filiation de la carte d'europe : monde*europe
380
        //on aura comme valeur pour $this->filiation de la carte d'europe : monde*europe
381
        $this->fils[$id]->filiation = $this->filiation.'*'.$id;
381
        $this->fils[$id]->filiation = $this->filiation.'*'.$id;
382
        $this->fils[$id]->url = $this->url;
382
        $this->fils[$id]->url = $this->url;
383
        //Si on ajoute à la carte du monde dont le nom est 'Monde' comme fils celle de l'europe,
383
        //Si on ajoute à la carte du monde dont le nom est 'Monde' comme fils celle de l'europe,
384
        //dont le nom est 'Europe', alors on aura comme valeur pour $this->nom de la carte d'europe : Monde*Europe
384
        //dont le nom est 'Europe', alors on aura comme valeur pour $this->nom de la carte d'europe : Monde*Europe
385
        $this->fils[$id]->nom = $this->nom.'*'.$nom;
385
        $this->fils[$id]->nom = $this->nom.'*'.$nom;
386
        $this->fils[$id]->historique_cartes = $this->historique_cartes;
386
        $this->fils[$id]->historique_cartes = $this->historique_cartes;
387
    }
387
    }
388
    
388
    
389
    //*********************************************************************************************************	
389
    //*********************************************************************************************************	
390
    // La methode donnerFormulaireImage() est la methode principale de la carto. C'est elle qui gere ce qu'il y a faire en 
390
    // La methode donnerFormulaireImage() est la methode principale de la carto. C'est elle qui gere ce qu'il y a faire en 
391
    // fonction de l'action de l'utilisateur.
391
    // fonction de l'action de l'utilisateur.
392
    // Trois cas se distinguent :
392
    // Trois cas se distinguent :
393
    //      -soit l'utilisateur a clique sur un point de la carte.
393
    //      -soit l'utilisateur a clique sur un point de la carte.
394
    //      -soit il a clique sur un des liens que l'on a afficher avec la méthode afficherHistoriqueCarte de l'objet Carto_HistoriqueCarte.
394
    //      -soit il a clique sur un des liens que l'on a afficher avec la méthode afficherHistoriqueCarte de l'objet Carto_HistoriqueCarte.
395
    //      -soit il a sélectionné une zone géographique dans la liste déroulante.
395
    //      -soit il a sélectionné une zone géographique dans la liste déroulante.
396
    // Elle renvoit a la fin: 
396
    // Elle renvoit a la fin: 
397
    //      -soit une nouvelle carte coloriée
397
    //      -soit une nouvelle carte coloriée
398
    //      -soit false.
398
    //      -soit false.
399
    //**********************************************************************************************************
399
    //**********************************************************************************************************
400
    
400
    
401
    function donnerFormulaireImage ()
401
    function donnerFormulaireImage ()
402
    {
402
    {
403
        global $GS_GLOBAL;
403
        global $GS_GLOBAL;
404
        $res = '';
404
        $res = '';
405
        
405
        
406
        // Nous commençons par tester tout d'abords si nous venons d'une autre carte. Pour cela nous vérifions,
406
        // Nous commençons par tester tout d'abords si nous venons d'une autre carte. Pour cela nous vérifions,
407
        // si les attributs $this->image_x et $this->image_y de la classe Carte existe ou ne sont pas null.
407
        // si les attributs $this->image_x et $this->image_y de la classe Carte existe ou ne sont pas null.
408
        // La carte est une image appelée par une balise <input type="image"> et non par une balise classique <img>.
408
        // La carte est une image appelée par une balise <input type="image"> et non par une balise classique <img>.
409
        // Ansi, lorsqu'on clique sur la carte le formulaire appelle (via l'url du formulaire) l'application  
409
        // Ansi, lorsqu'on clique sur la carte le formulaire appelle (via l'url du formulaire) l'application  
410
        // utilisant la classe carte et lui renvoit deux variables contenant les coordonnées x et y du clic.
410
        // utilisant la classe carte et lui renvoit deux variables contenant les coordonnées x et y du clic.
411
        // L'application instancie à nouveau les objets cartes mais cette fois ci la carte affichée dépendra des
411
        // L'application instancie à nouveau les objets cartes mais cette fois ci la carte affichée dépendra des
412
        // informations founit par une table de la base de données.
412
        // informations founit par une table de la base de données.
413
        // La classe carto_action instanciée dans l'application utilisant la classe carte fournit les noms
413
        // La classe carto_action instanciée dans l'application utilisant la classe carte fournit les noms
414
        // des champs et celui de la table contenant les valeur RVB de chaque zone des cartes, l'identifiant
414
        // des champs et celui de la table contenant les valeur RVB de chaque zone des cartes, l'identifiant
415
        // de la zone et l'action à entreprendre pour la zone conssidérée.
415
        // de la zone et l'action à entreprendre pour la zone conssidérée.
416
        // La méthode imgform() utilise la méthode get_cartoAction() de l'objet Carto_Action pour connaître 
416
        // La méthode imgform() utilise la méthode get_cartoAction() de l'objet Carto_Action pour connaître 
417
        // en fonction des coordonnées du clic l'action à entreprendre. 
417
        // en fonction des coordonnées du clic l'action à entreprendre. 
418
                
418
                
419
        if (isset ($this->image_x) && ($this->image_x != '') && isset ($this->image_y) && ($this->image_y != '')) {
419
        if (isset ($this->image_x) && ($this->image_x != '') && isset ($this->image_y) && ($this->image_y != '')) {
420
            // on regarde ici si l'on a pas un objet de plus bas niveau présent dans la variable de session carte
420
            // on regarde ici si l'on a pas un objet de plus bas niveau présent dans la variable de session carte
421
            //a charger a la place de l'objet de plus haut niveau 
421
            //a charger a la place de l'objet de plus haut niveau 
422
            
422
            
423
            $var_session_retour = $_SESSION['carte'] ;
423
            $var_session_retour = $_SESSION['carte'] ;
424
            
424
            
425
            if ($var_session_retour) {
425
            if ($var_session_retour) {
426
                $image_x = $this->image_x;
426
                $image_x = $this->image_x;
427
                $image_y = $this->image_y;
427
                $image_y = $this->image_y;
428
                $liste_zone_carte = $this->liste_zone_carte;
428
                $liste_zone_carte = $this->liste_zone_carte;
429
                // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
429
                // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
430
 
430
 
431
                $historique_cartes = explode('*',$this->historique_cartes);
431
                $historique_cartes = explode('*',$this->historique_cartes);
432
                foreach ($historique_cartes as $key => $value) {
432
                foreach ($historique_cartes as $key => $value) {
433
                    if ($key != 0) {
433
                    if ($key != 0) { 
-
 
434
                        foreach (get_object_vars($this->fils[$value]) as $key => $value) 
434
                        $this = $this->fils[$value];
435
                               $this->$key = $value; 
435
                    }
436
                    }
436
                }
437
                }
-
 
438
 
437
                $this->image_x = $image_x;
439
                $this->image_x = $image_x;
438
                $this->image_y = $image_y;
440
                $this->image_y = $image_y;
439
                $this->liste_zone_carte = $liste_zone_carte;
441
                $this->liste_zone_carte = $liste_zone_carte;
440
                unset ($_SESSION['carte']) ;
442
                unset ($_SESSION['carte']) ;
441
            }
443
            }
442
            
444
            
443
            // on regarde qu'est-ce qu'on doit faire grace a la methode _consulterAction() de l'objet Carto_Action
445
            // on regarde qu'est-ce qu'on doit faire grace a la methode _consulterAction() de l'objet Carto_Action
444
           
446
           
445
            $action = $this->_action->_consulterActionImage($this->image_x, $this->image_y, $this->masque, $this->id);
447
            $action = $this->_action->_consulterActionImage($this->image_x, $this->image_y, $this->masque, $this->id);
446
            
448
            
447
            // Nous distinguons 2 cas :
449
            // Nous distinguons 2 cas :
448
            //le cas ou il faut afficher une nouvelle carte ... :
450
            //le cas ou il faut afficher une nouvelle carte ... :
449
            if ($action['type_action'] == 'Aller_a') {
451
            if ($action['type_action'] == 'Aller_a') {
450
                
452
                
451
                $id_carte_destination = $action['id_carte_destination'] ;
453
                $id_carte_destination = $action['id_carte_destination'] ;
452
                $this->fils[$id_carte_destination]->liste_zone_carte = $this->liste_zone_carte;
454
                $this->fils[$id_carte_destination]->liste_zone_carte = $this->liste_zone_carte;
453
                if (INS_AFFICHE_ZONE_ROUGE) {
455
                if (INS_AFFICHE_ZONE_ROUGE) {
454
                	$res .= ''.$this->fils[$id_carte_destination]->_donnerListeZoneCarte()."<br />\n";
456
                	$res .= ''.$this->fils[$id_carte_destination]->_donnerListeZoneCarte()."<br />\n";
455
                }
457
                }
456
                $res .= '<input type="image" src="';
458
                $res .= '<input type="image" src="';
457
                $id_image = $this->_donnerIdUnique();
459
                $id_image = $this->_donnerIdUnique();
458
                $this->fils[$id_carte_destination]->_lancerColoriage($id_image);
460
                $this->fils[$id_carte_destination]->_lancerColoriage($id_image);
459
                $obj = serialize($this->fils[$id_carte_destination]);
461
                $obj = serialize($this->fils[$id_carte_destination]);
460
                $_SESSION['carte'] = $obj ;
462
                $_SESSION['carte'] = $obj ;
461
                $this->historique = $this->fils[$id_carte_destination]->filiation;
463
                $this->historique = $this->fils[$id_carte_destination]->filiation;
462
                $this->id = $this->fils[$id_carte_destination]->id;
464
                $this->id = $this->fils[$id_carte_destination]->id;
463
                $this->nom = $this->fils[$id_carte_destination]->nom;
465
                $this->nom = $this->fils[$id_carte_destination]->nom;
464
            }
466
            }
465
            //Dans le cas où l'on veut rappeler une nouvelle carte, il se peut que la nouvelle carte à rappeler
467
            //Dans le cas où l'on veut rappeler une nouvelle carte, il se peut que la nouvelle carte à rappeler
466
            //soit la même que précédement.
468
            //soit la même que précédement.
467
            //Cette possibilité peut se présenter quand on clique sur un zone blanche d'une carte (càd dans la mer)
469
            //Cette possibilité peut se présenter quand on clique sur un zone blanche d'une carte (càd dans la mer)
468
            //Là, on recharge la carte précédente :
470
            //Là, on recharge la carte précédente :
469
            elseif ($action['type_action'] == 'Recharger') {
471
            elseif ($action['type_action'] == 'Recharger') {
470
                if (INS_AFFICHE_ZONE_ROUGE) {
472
                if (INS_AFFICHE_ZONE_ROUGE) {
471
                	$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
473
                	$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
472
                }
474
                }
473
                $res .= '<input type="image" src="';
475
                $res .= '<input type="image" src="';
474
                $id_image = $this->_donnerIdUnique();
476
                $id_image = $this->_donnerIdUnique();
475
                $this->_lancerColoriage($id_image);
477
                $this->_lancerColoriage($id_image);
476
                $obj = serialize($this);
478
                $obj = serialize($this);
477
                $_SESSION['carte'] = $obj ;
479
                $_SESSION['carte'] = $obj ;
478
                $this->historique = $this->filiation;
480
                $this->historique = $this->filiation;
479
            }
481
            }
480
            // ... et le cas ou il faut lancer le dernier niveau
482
            // ... et le cas ou il faut lancer le dernier niveau
481
            else if ($action['type_action'] == 'Stop') {
483
            else if ($action['type_action'] == 'Stop') {
482
                unset ($_SESSION['carte']) ;
484
                unset ($_SESSION['carte']) ;
483
                $this->historique = $this->filiation.'*'.$action['id_zone_geo'];
485
                $this->historique = $this->filiation.'*'.$action['id_zone_geo'];
484
                $obj = serialize($this);
486
                $obj = serialize($this);
485
                $_SESSION['carte'] = $obj ;
487
                $_SESSION['carte'] = $obj ;
486
                return false;
488
                return false;
487
            }
489
            }
488
        }
490
        }
489
        elseif ($this->liste_zone_carte != '') {
491
        elseif ($this->liste_zone_carte != '') {
490
            $liste_zone_carte = $this->liste_zone_carte;
492
            $liste_zone_carte = $this->liste_zone_carte;
491
            $historique_cartes = explode('*',$this->historique_cartes);
493
            $historique_cartes = explode('*',$this->historique_cartes);
492
            foreach ($historique_cartes as $key => $value) {
494
            foreach ($historique_cartes as $key => $value) {
493
                if ($key != 0) {
495
                    if ($key != 0) { 
-
 
496
                        foreach (get_object_vars($this->fils[$value]) as $key => $value) 
494
                    $this = $this->fils[$value];
497
                               $this->$key = $value; 
-
 
498
                    }
495
                }
499
                }
496
            }
-
 
497
            $this->liste_zone_carte = $liste_zone_carte;
500
            $this->liste_zone_carte = $liste_zone_carte;
498
            if (INS_AFFICHE_ZONE_ROUGE) {
501
            if (INS_AFFICHE_ZONE_ROUGE) {
499
            	$res .= ''.$this->_donnerListeZoneCarte($this->liste_zone_carte)."<br />\n";
502
            	$res .= ''.$this->_donnerListeZoneCarte($this->liste_zone_carte)."<br />\n";
500
            }
503
            }
501
            $res .= '<input type="image" src="';
504
            $res .= '<input type="image" src="';
502
            $id_image = $this->_donnerIdUnique();
505
            $id_image = $this->_donnerIdUnique();
503
            $this->_lancerColoriage($id_image, '', $this->liste_zone_carte);
506
            $this->_lancerColoriage($id_image, '', $this->liste_zone_carte);
504
            $this->historique = $this->historique_cartes;
507
            $this->historique = $this->historique_cartes;
505
            $obj = serialize($this);
508
            $obj = serialize($this);
506
            $_SESSION['carte'] = $obj ;
509
            $_SESSION['carte'] = $obj ;
507
        }
510
        }
508
        // On teste maintenant si l'on vient d'un lien. Si c'est le cas on a recu un argument 
511
        // On teste maintenant si l'on vient d'un lien. Si c'est le cas on a recu un argument 
509
        // qui nous donne la "genealogie" de la carte que l'on doit afficher 
512
        // qui nous donne la "genealogie" de la carte que l'on doit afficher 
510
        else if ($this->historique_cartes) {
513
        else if ($this->historique_cartes) {
511
            // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
514
            // Nous chargons alors l'ojet approprié en descendant grâce a la généalogie
512
            $historique_cartes = explode('*',$this->historique_cartes);
515
            $historique_cartes = explode('*',$this->historique_cartes);
513
            foreach ($historique_cartes as $key => $value) {
516
            foreach ($historique_cartes as $key => $value) {
514
                if ($key != 0) {
517
                if ($key != 0) { 
-
 
518
                    foreach (get_object_vars($this->fils[$value]) as $key => $value) 
515
                    $this = $this->fils[$value];
519
                           $this->$key = $value; 
516
                }
520
                }
517
            }
521
            }
518
            // une foit que l'on a charge le bon objet nous le colorions 
522
            // une foit que l'on a charge le bon objet nous le colorions 
519
            if (INS_AFFICHE_ZONE_ROUGE) {
523
            if (INS_AFFICHE_ZONE_ROUGE) {
520
            	$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
524
            	$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
521
            }
525
            }
522
            $res .= '<input type="image" src="';
526
            $res .= '<input type="image" src="';
523
            $id_image = $this->_donnerIdUnique();
527
            $id_image = $this->_donnerIdUnique();
524
            $this->_lancerColoriage($id_image);
528
            $this->_lancerColoriage($id_image);
525
            $this->historique = $this->historique_cartes;
529
            $this->historique = $this->historique_cartes;
526
            $obj = serialize($this);
530
            $obj = serialize($this);
527
            $_SESSION['carte'] = $obj ;
531
            $_SESSION['carte'] = $obj ;
528
        }
532
        }
529
        // 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
533
        // 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
530
        // et on affiche alors la premiere carte
534
        // et on affiche alors la premiere carte
531
        else {
535
        else {
532
            unset ($_SESSION['carte']) ;
536
            unset ($_SESSION['carte']) ;
533
            if (INS_AFFICHE_ZONE_ROUGE) {
537
            if (INS_AFFICHE_ZONE_ROUGE) {
534
            	$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
538
            	$res .= ''.$this->_donnerListeZoneCarte()."<br />\n";
535
            }
539
            }
536
            $res .= '<input type="image" src="';
540
            $res .= '<input type="image" src="';
537
            $id_image = $this->_donnerIdUnique();
541
            $id_image = $this->_donnerIdUnique();
538
            $this->_lancerColoriage($id_image);
542
            $this->_lancerColoriage($id_image);
539
            $this->historique = $this->id;
543
            $this->historique = $this->id;
540
            $obj = serialize($this);
544
            $obj = serialize($this);
541
            
545
            
542
            $_SESSION['carte'] = $obj ;
546
            $_SESSION['carte'] = $obj ;
543
        }
547
        }
544
        $res .= INS_CHEMIN_APPLI.'/bibliotheque/lib.carto.extractimg.php?fichier='.$this->id.$id_image.'"';
548
        $res .= INS_CHEMIN_APPLI.'/bibliotheque/lib.carto.extractimg.php?fichier='.$this->id.$id_image.'"';
545
        $res .= ' name="image" onmouseover="javascript:show(\'d\');" onmouseout="javascript:show(\'d\');" />'."\n";
549
        $res .= ' name="image" onmouseover="javascript:show(\'d\');" onmouseout="javascript:show(\'d\');" />'."\n";
546
        $res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" />'."\n";
550
        $res .= '<input type="hidden" name="historique_cartes" value="'.$this->historique.'" />'."\n";
547
        return $res;
551
        return $res;
548
    }
552
    }
549
    
553
    
550
    /*|=============================================================================================|*/
554
    /*|=============================================================================================|*/
551
    /*|                                LES METHODES PRIVEES                                         |*/
555
    /*|                                LES METHODES PRIVEES                                         |*/
552
    /*|---------------------------------------------------------------------------------------------|*/
556
    /*|---------------------------------------------------------------------------------------------|*/
553
    function _donnerListeZoneCarte($zone_par_defaut = '')
557
    function _donnerListeZoneCarte($zone_par_defaut = '')
554
    {
558
    {
555
        $retour = '';
559
        $retour = '';
556
        
560
        
557
        $requete =
561
        $requete =
558
                    'SELECT '.$this->_info_table_zg['nom_chp_id_zone'].', '.$this->_info_table_zg['nom_chp_nom_zone'].
562
                    'SELECT '.$this->_info_table_zg['nom_chp_id_zone'].', '.$this->_info_table_zg['nom_chp_nom_zone'].
559
                    ' FROM '.$this->_info_table_zg['nom_table_zone'];
563
                    ' FROM '.$this->_info_table_zg['nom_table_zone'];
560
        if ($this->_info_table_zg['nom_chp_zone_sup'] != ''){
564
        if ($this->_info_table_zg['nom_chp_zone_sup'] != ''){
561
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
565
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
562
                $requete .=
566
                $requete .=
563
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = "'.$this->_id_zone_geo_carte.'"';
567
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = "'.$this->_id_zone_geo_carte.'"';
564
            }
568
            }
565
            else{
569
            else{
566
                $requete .=
570
                $requete .=
567
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = '.$this->_id_zone_geo_carte;
571
                    ' WHERE '.$this->_info_table_zg['nom_chp_zone_sup'].' = '.$this->_id_zone_geo_carte;
568
            }
572
            }
569
        }
573
        }
570
        $requete .=
574
        $requete .=
571
                    ' ORDER BY '.$this->_info_table_zg['nom_chp_nom_zone'].' ASC';
575
                    ' ORDER BY '.$this->_info_table_zg['nom_chp_nom_zone'].' ASC';
572
	$resultat = mysql_query ($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, 
576
	$resultat = mysql_query ($requete) or die(BOG_afficherErreurSql(__FILE__, __LINE__, 
573
								'', $requete));
577
								'', $requete));
574
        
578
        
575
        $i=0;
579
        $i=0;
576
        
580
        
577
        $retour = '<select name="liste_zone_carte" style="float:right;" onchange="javascript:this.form.submit();">'."\n";
581
        $retour = '<select name="liste_zone_carte" style="float:right;" onchange="javascript:this.form.submit();">'."\n";
578
        $retour .= '<option value="">'.INS_VISUALISER_ZONE.'</option>'."\n";
582
        $retour .= '<option value="">'.INS_VISUALISER_ZONE.'</option>'."\n";
579
        
583
        
580
        $nom_chp_nom_zone = $this->_info_table_zg['nom_chp_nom_zone'];
584
        $nom_chp_nom_zone = $this->_info_table_zg['nom_chp_nom_zone'];
581
        $nom_chp_id_zone = $this->_info_table_zg['nom_chp_id_zone'];
585
        $nom_chp_id_zone = $this->_info_table_zg['nom_chp_id_zone'];
582
        
586
        
583
        while ($ligne = mysql_fetch_object ($resultat)) {
587
        while ($ligne = mysql_fetch_object ($resultat)) {
584
            if ($zone_par_defaut == $ligne->$nom_chp_id_zone){
588
            if ($zone_par_defaut == $ligne->$nom_chp_id_zone){
585
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'" selected="selected">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
589
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'" selected="selected">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
586
            }
590
            }
587
            else {
591
            else {
588
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
592
                $retour .= '<option value="'.$ligne->$nom_chp_id_zone.'">'.$ligne->$nom_chp_nom_zone.'</option>'."\n";
589
            }
593
            }
590
            $i++;
594
            $i++;
591
        }
595
        }
592
        
596
        
593
        $retour .= '</select>'."\n";
597
        $retour .= '</select>'."\n";
594
        
598
        
595
        return $retour;
599
        return $retour;
596
    }
600
    }
597
    //==============================================================================
601
    //==============================================================================
598
    // METHODE _lancerColoriage() 
602
    // METHODE _lancerColoriage() 
599
    // 
603
    // 
600
    // Elle lance le coloriage de l'image.
604
    // Elle lance le coloriage de l'image.
601
    // Elle est lancée toute seule par la méthode donnerFormulaireImage().
605
    // Elle est lancée toute seule par la méthode donnerFormulaireImage().
602
    // Les informations qui lui sont necessaires sont déjà données à l'objet carte (fond, info_table_couleur).
606
    // Les informations qui lui sont necessaires sont déjà données à l'objet carte (fond, info_table_couleur).
603
    //==============================================================================
607
    //==============================================================================
604
    
608
    
605
    function _lancerColoriage ($id_image = '_00', $nom_fichier = '', $id_zone_a_reperer = '') 
609
    function _lancerColoriage ($id_image = '_00', $nom_fichier = '', $id_zone_a_reperer = '') 
606
    {
610
    {
607
    	
611
    	
608
        $this->image = imagecreatefrompng($this->fond);
612
        $this->image = imagecreatefrompng($this->fond);
609
        
613
        
610
        $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'],
614
        $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'],
611
                                        $this->_info_table_zg['nom_chp_vert'], $this->_info_table_zg['nom_chp_bleu'], $this->_info_table_zg['nom_chp_zone_sup'],
615
                                        $this->_info_table_zg['nom_chp_vert'], $this->_info_table_zg['nom_chp_bleu'], $this->_info_table_zg['nom_chp_zone_sup'],
612
                                        $this->_info_table_zg['tableau_valeurs_zone'], $id_zone_a_reperer) ;
616
                                        $this->_info_table_zg['tableau_valeurs_zone'], $id_zone_a_reperer) ;
613
        if ($nom_fichier != '') {
617
        if ($nom_fichier != '') {
614
            imagepng(&$this->image, INS_CHEMIN_APPLI.'bibliotheque/tmp/carto/'.$nom_fichier.'.png');
618
            imagepng(&$this->image, INS_CHEMIN_APPLI.'bibliotheque/tmp/carto/'.$nom_fichier.'.png');
615
	    
619
	    
616
            //$this->image = imagepng(&$this->image);
620
            //$this->image = imagepng(&$this->image);
617
        }
621
        }
618
        else {
622
        else {
619
            imagepng(&$this->image, INS_CHEMIN_APPLI.'bibliotheque/tmp/carto/'.$this->id.$id_image.'.png');
623
            imagepng(&$this->image, INS_CHEMIN_APPLI.'bibliotheque/tmp/carto/'.$this->id.$id_image.'.png');
620
            //imagepng(&$this->image);
624
            //imagepng(&$this->image);
621
        }
625
        }
622
    }
626
    }
623
    
627
    
624
    //==============================================================================
628
    //==============================================================================
625
    // METHODE _colorierImage() 
629
    // METHODE _colorierImage() 
626
    // 
630
    // 
627
    // Elle réalise le coloriage de l'image.
631
    // Elle réalise le coloriage de l'image.
628
    //==============================================================================
632
    //==============================================================================
629
    
633
    
630
    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) 
634
    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) 
631
    {
635
    {
632
        //----------------------------------------------------------------------------
636
        //----------------------------------------------------------------------------
633
        // Cherche les valeurs RVB de la couleur de chaque zone géographique et les rentre dans 
637
        // Cherche les valeurs RVB de la couleur de chaque zone géographique et les rentre dans 
634
        //un tableau d'objets Carto_InformationCouleur (voir la description de la classe ci-dessus.
638
        //un tableau d'objets Carto_InformationCouleur (voir la description de la classe ci-dessus.
635
        
639
        
636
        $requete_01 =
640
        $requete_01 =
637
                    'SELECT *'.
641
                    'SELECT *'.
638
                    ' FROM '.$table_zone_geo;
642
                    ' FROM '.$table_zone_geo;
639
        if ($chp_zone_sup != ''){
643
        if ($chp_zone_sup != ''){
640
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
644
            if(ereg("[a-z]+",$this->_id_zone_geo_carte)){
641
                $requete_01 .=
645
                $requete_01 .=
642
                    ' WHERE '.$chp_zone_sup.' = "'.$this->_id_zone_geo_carte.'"';
646
                    ' WHERE '.$chp_zone_sup.' = "'.$this->_id_zone_geo_carte.'"';
643
            }
647
            }
644
            else{
648
            else{
645
                $requete_01 .=
649
                $requete_01 .=
646
                    ' WHERE '.$chp_zone_sup.' = '.$this->_id_zone_geo_carte;
650
                    ' WHERE '.$chp_zone_sup.' = '.$this->_id_zone_geo_carte;
647
            }
651
            }
648
        }
652
        }
649
        $resultat_01 = mysql_query ($requete_01) or die('
653
        $resultat_01 = mysql_query ($requete_01) or die('
650
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
654
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
651
            '<b>Requete : </b>'.$requete_01.
655
            '<b>Requete : </b>'.$requete_01.
652
            '<br/><br/><b>Erreur : </b>'.mysql_error());
656
            '<br/><br/><b>Erreur : </b>'.mysql_error());
653
        $i=0;
657
        $i=0;
654
        $attachments = array();
658
        $attachments = array();
655
        while ($ligne_01 = mysql_fetch_object ($resultat_01)) {
659
        while ($ligne_01 = mysql_fetch_object ($resultat_01)) {
656
            $attachments[$i] = new Carto_InformationCouleur ($ligne_01->$chp_id_zone_couleur, $ligne_01->$chp_rouge, $ligne_01->$chp_vert, $ligne_01->$chp_bleu);
660
            $attachments[$i] = new Carto_InformationCouleur ($ligne_01->$chp_id_zone_couleur, $ligne_01->$chp_rouge, $ligne_01->$chp_vert, $ligne_01->$chp_bleu);
657
            $i++;
661
            $i++;
658
        }
662
        }
659
        
663
        
660
        //Nous libérons toute la mémoire associée à l'identifiant de résultat.
664
        //Nous libérons toute la mémoire associée à l'identifiant de résultat.
661
        mysql_free_result ($resultat_01);
665
        mysql_free_result ($resultat_01);
662
        
666
        
663
        //----------------------------------------------------------------------------
667
        //----------------------------------------------------------------------------
664
        // On realide l'association entre l'index des couleurs et la zone de meme couleur
668
        // On realide l'association entre l'index des couleurs et la zone de meme couleur
665
        
669
        
666
        $attachments = $this->_construireAssociationIndexZone ($image_fond, $attachments);
670
        $attachments = $this->_construireAssociationIndexZone ($image_fond, $attachments);
667
        
671
        
668
        //----------------------------------------------------------------------------
672
        //----------------------------------------------------------------------------
669
        //Dans l'application qui utilise la classe carte, nous avons instancié un tableau
673
        //Dans l'application qui utilise la classe carte, nous avons instancié un tableau
670
        //associatif qui contient en clé l'identifiant d'une zone géographique et en valeur
674
        //associatif qui contient en clé l'identifiant d'une zone géographique et en valeur
671
        //un nombre (qui peut-être un nombre d'inscrit, d'institutions, de taxons...).
675
        //un nombre (qui peut-être un nombre d'inscrit, d'institutions, de taxons...).
672
        // Nous récupérons ci-dessous la valeur minimum autre que 0 présente dans ce tableau
676
        // Nous récupérons ci-dessous la valeur minimum autre que 0 présente dans ce tableau
673
        //puis une valeur conscidérée comme maximum 
677
        //puis une valeur conscidérée comme maximum 
674
        
678
        
675
        if (!is_array($tableau_valeurs_zone)) {
679
        if (!is_array($tableau_valeurs_zone)) {
676
            $mini = 0;
680
            $mini = 0;
677
            $medium = 0;
681
            $medium = 0;
678
            $maxi = 0;
682
            $maxi = 0;
679
            $nbre_valeurs = 0;
683
            $nbre_valeurs = 0;
680
        }
684
        }
681
        else {
685
        else {
682
            if (count($tableau_valeurs_zone) == 0) {
686
            if (count($tableau_valeurs_zone) == 0) {
683
                $mini=0;
687
                $mini=0;
684
                $medium = 0;
688
                $medium = 0;
685
                $maxi=0;
689
                $maxi=0;
686
            }
690
            }
687
            else {
691
            else {
688
                $i=0;
692
                $i=0;
689
                foreach ($tableau_valeurs_zone as $cle => $valeur) {
693
                foreach ($tableau_valeurs_zone as $cle => $valeur) {
690
                    //Nous recherchons le minimum, le maximum et le la valeur médium juste au dessous du maximum.
694
                    //Nous recherchons le minimum, le maximum et le la valeur médium juste au dessous du maximum.
691
                    if ($valeur != 0) {
695
                    if ($valeur != 0) {
692
                        $tablo_valeurs[$i] = $valeur;
696
                        $tablo_valeurs[$i] = $valeur;
693
                        $i++;
697
                        $i++;
694
                    }
698
                    }
695
                }
699
                }
696
                //Nombre d'entrées dans le tableau de valeurs non nulles :
700
                //Nombre d'entrées dans le tableau de valeurs non nulles :
697
                $nbre_valeurs = count($tablo_valeurs);
701
                $nbre_valeurs = count($tablo_valeurs);
698
                $somme_valeurs = array_sum($tablo_valeurs);
702
                $somme_valeurs = array_sum($tablo_valeurs);
699
                $tablo_frequences = array_count_values($tablo_valeurs);
703
                $tablo_frequences = array_count_values($tablo_valeurs);
700
                $nbre_frequences = count($tablo_frequences);
704
                $nbre_frequences = count($tablo_frequences);
701
                if ($nbre_valeurs > 0){
705
                if ($nbre_valeurs > 0){
702
                    //Nous trions le tableau dans l'ordre croissant :
706
                    //Nous trions le tableau dans l'ordre croissant :
703
                    sort($tablo_valeurs);
707
                    sort($tablo_valeurs);
704
                    //Nous récupérons la valeur la plus petite :
708
                    //Nous récupérons la valeur la plus petite :
705
                    $mini = $tablo_valeurs[0];
709
                    $mini = $tablo_valeurs[0];
706
                    $maxi = $tablo_valeurs[$nbre_valeurs-1];
710
                    $maxi = $tablo_valeurs[$nbre_valeurs-1];
707
                    isset($tablo_valeurs[$nbre_valeurs-2]) ? $medium = $tablo_valeurs[$nbre_valeurs-2] : $medium = 0;
711
                    isset($tablo_valeurs[$nbre_valeurs-2]) ? $medium = $tablo_valeurs[$nbre_valeurs-2] : $medium = 0;
708
                    $moyenne = $somme_valeurs/$nbre_valeurs;
712
                    $moyenne = $somme_valeurs/$nbre_valeurs;
709
                    $ecart_au_carre_moyen = 0;
713
                    $ecart_au_carre_moyen = 0;
710
                    for ($i = 0; $i < $nbre_valeurs; $i++) {
714
                    for ($i = 0; $i < $nbre_valeurs; $i++) {
711
                        $ecart_au_carre_moyen += pow(($tablo_valeurs[$i] - $moyenne), 2);
715
                        $ecart_au_carre_moyen += pow(($tablo_valeurs[$i] - $moyenne), 2);
712
                    }
716
                    }
713
                    $variance = $ecart_au_carre_moyen/$nbre_valeurs;
717
                    $variance = $ecart_au_carre_moyen/$nbre_valeurs;
714
                    $ecart_type = sqrt($variance);
718
                    $ecart_type = sqrt($variance);
715
                    
719
                    
716
                    $moyenne = round($moyenne, 0);
720
                    $moyenne = round($moyenne, 0);
717
                    $variance = round($variance, 0);
721
                    $variance = round($variance, 0);
718
                    $ecart_type = round($ecart_type, 0);
722
                    $ecart_type = round($ecart_type, 0);
719
                    
723
                    
720
                    /*echo 'Nombre de valeurs : '.$nbre_valeurs.'<br>';
724
                    /*echo 'Nombre de valeurs : '.$nbre_valeurs.'<br>';
721
                    echo 'Nombre de frequences : '.$nbre_frequences.'<br>';
725
                    echo 'Nombre de frequences : '.$nbre_frequences.'<br>';
722
                    echo 'Moyenne : '.$moyenne.'<br>';
726
                    echo 'Moyenne : '.$moyenne.'<br>';
723
                    echo 'Variance : '.$variance.'<br>';
727
                    echo 'Variance : '.$variance.'<br>';
724
                    echo 'Ecart-type : '.$ecart_type.'<br>';
728
                    echo 'Ecart-type : '.$ecart_type.'<br>';
725
                    echo 'Formule de coloriage : '.$this->_formule_coloriage.'<br>';
729
                    echo 'Formule de coloriage : '.$this->_formule_coloriage.'<br>';
726
                    echo "mini : $mini medium : $medium maxi : $maxi<br/>";
730
                    echo "mini : $mini medium : $medium maxi : $maxi<br/>";
727
            */
731
            */
728
                }
732
                }
729
            }
733
            }
730
        }
734
        }
731
 
735
 
732
        //----------------------------------------------------------------------------
736
        //----------------------------------------------------------------------------
733
        // Nous réalisons le coloriage de toutes les zones :
737
        // Nous réalisons le coloriage de toutes les zones :
734
        
738
        
735
        $requete_03 =
739
        $requete_03 =
736
            "SELECT $chp_id_zone_couleur ".
740
            "SELECT $chp_id_zone_couleur ".
737
            "FROM $table_zone_geo";
741
            "FROM $table_zone_geo";
738
        
742
        
739
        $resultat_03 = mysql_query ($requete_03) or die('
743
        $resultat_03 = mysql_query ($requete_03) or die('
740
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
744
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
741
            '<b>Requete : </b>'.$requete_03.
745
            '<b>Requete : </b>'.$requete_03.
742
            '<br/><br/><b>Erreur : </b>'.mysql_error());
746
            '<br/><br/><b>Erreur : </b>'.mysql_error());
743
        
747
        
744
        while ($ligne_03 = mysql_fetch_object ($resultat_03)) {
748
        while ($ligne_03 = mysql_fetch_object ($resultat_03)) {
745
            $id_zone_geo = $ligne_03->$chp_id_zone_couleur;
749
            $id_zone_geo = $ligne_03->$chp_id_zone_couleur;
746
            if (!isset ($tableau_valeurs_zone[$id_zone_geo])) {
750
            if (!isset ($tableau_valeurs_zone[$id_zone_geo])) {
747
                $tableau_valeurs_zone[$id_zone_geo] = 0;
751
                $tableau_valeurs_zone[$id_zone_geo] = 0;
748
            }
752
            }
749
            //Nous cherchons la couleur a afficher pour chaque zone.
753
            //Nous cherchons la couleur a afficher pour chaque zone.
750
            if ($tableau_valeurs_zone[$id_zone_geo] != 0) {
754
            if ($tableau_valeurs_zone[$id_zone_geo] != 0) {
751
                //echo 'ZONE:'.$id_zone_geo."<br/>";
755
                //echo 'ZONE:'.$id_zone_geo."<br/>";
752
                //echo $tableau_valeurs_zone[$id_zone_geo]."<br/>";
756
                //echo $tableau_valeurs_zone[$id_zone_geo]."<br/>";
753
                $theColor = $this->_donnerCouleur(
757
                $theColor = $this->_donnerCouleur(
754
                                        $this->_miniR, $this->_miniV, $this->_miniB,
758
                                        $this->_miniR, $this->_miniV, $this->_miniB,
755
                                        $this->_mediumR , $this->_mediumV , $this->_mediumB ,
759
                                        $this->_mediumR , $this->_mediumV , $this->_mediumB ,
756
                                        $this->_maxiR , $this->_maxiV , $this->_maxiB ,
760
                                        $this->_maxiR , $this->_maxiV , $this->_maxiB ,
757
                                        $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs,
761
                                        $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs,
758
                                        $tablo_frequences, $nbre_frequences, 
762
                                        $tablo_frequences, $nbre_frequences, 
759
                                        $tableau_valeurs_zone[$id_zone_geo],
763
                                        $tableau_valeurs_zone[$id_zone_geo],
760
                                        $this->_formule_coloriage);
764
                                        $this->_formule_coloriage);
761
                //echo $theColor['R'].'<br>';
765
                //echo $theColor['R'].'<br>';
762
                //echo $theColor['V'].'<br>';
766
                //echo $theColor['V'].'<br>';
763
                //echo $theColor['B'].'<br>';
767
                //echo $theColor['B'].'<br>';
764
            }
768
            }
765
            else {
769
            else {
766
                $theColor['R'] = $this->_zeroR;
770
                $theColor['R'] = $this->_zeroR;
767
                $theColor['V'] = $this->_zeroV;
771
                $theColor['V'] = $this->_zeroV;
768
                $theColor['B'] = $this->_zeroB;
772
                $theColor['B'] = $this->_zeroB;
769
            }
773
            }
770
            //Nous réalisons le coloriage de toutes les zones de l'image avec la couleur obtenue.
774
            //Nous réalisons le coloriage de toutes les zones de l'image avec la couleur obtenue.
771
            $this->_remplacerCouleur($image_fond, $attachments, $id_zone_geo,  $theColor['R'], $theColor['V'], $theColor['B'], $id_zone_a_reperer);
775
            $this->_remplacerCouleur($image_fond, $attachments, $id_zone_geo,  $theColor['R'], $theColor['V'], $theColor['B'], $id_zone_a_reperer);
772
        }
776
        }
773
        //Nous libérons toute la mémoire associée à l'identifiant de résultat de la requête.
777
        //Nous libérons toute la mémoire associée à l'identifiant de résultat de la requête.
774
        mysql_free_result ($resultat_03);
778
        mysql_free_result ($resultat_03);
775
    }
779
    }
776
    
780
    
777
    //==============================================================================
781
    //==============================================================================
778
    // METHODE  _construireAssociationIndexZone ($image, &$att)
782
    // METHODE  _construireAssociationIndexZone ($image, &$att)
779
    //
783
    //
780
    // Le tableau $att est passé par référence. La méthode modifie donc directement
784
    // Le tableau $att est passé par référence. La méthode modifie donc directement
781
    // le tableau et ne renvoit donc rien.
785
    // le tableau et ne renvoit donc rien.
782
    // Attache dans un tableau $att, contenant sous forme d'objet (Carto_ColorInfo)
786
    // Attache dans un tableau $att, contenant sous forme d'objet (Carto_ColorInfo)
783
    // les valeurs RVB des zones d'une image, la valeur de l'index correspondant 
787
    // les valeurs RVB des zones d'une image, la valeur de l'index correspondant 
784
    // à la couleur de la zone.
788
    // à la couleur de la zone.
785
    // Note : les images en question sont constituées de zones distincte possédant 
789
    // Note : les images en question sont constituées de zones distincte possédant 
786
    // chacune une couleur unique et unie.
790
    // chacune une couleur unique et unie.
787
    //==============================================================================
791
    //==============================================================================
788
    
792
    
789
    function _construireAssociationIndexZone(&$image_fond, &$att) 
793
    function _construireAssociationIndexZone(&$image_fond, &$att) 
790
    {
794
    {
791
        // Nous récupérons le nombre de couleur différentes contenues dans l'image.
795
        // Nous récupérons le nombre de couleur différentes contenues dans l'image.
792
        //echo $this->fond.'<BR>';
796
        //echo $this->fond.'<BR>';
793
        $image_fond = imagecreatefrompng($this->fond);
797
        $image_fond = imagecreatefrompng($this->fond);
794
        $taille_palette = imagecolorstotal ($image_fond);
798
        $taille_palette = imagecolorstotal ($image_fond);
795
        if (!$image_fond) echo 'erreur fond : '.$this->fond;
799
        if (!$image_fond) echo 'erreur fond : '.$this->fond;
796
        // Pour chaque couleur contenue dans l'image, nous cherchons l'objet correspondant
800
        // Pour chaque couleur contenue dans l'image, nous cherchons l'objet correspondant
797
        // dans le tableau $att, qui contient des informations sur chaque zone de l'image,
801
        // dans le tableau $att, qui contient des informations sur chaque zone de l'image,
798
        // et nous attribuons à l'objet la valeur de l'index de sa couleur dans l'image.
802
        // et nous attribuons à l'objet la valeur de l'index de sa couleur dans l'image.
799
        
803
        
800
        for ($i = 0; $i < $taille_palette; $i++) {
804
        for ($i = 0; $i < $taille_palette; $i++) {
801
            $valeurs_RVB = array();
805
            $valeurs_RVB = array();
802
            $valeurs_RVB = imagecolorsforindex ($image_fond, $i);
806
            $valeurs_RVB = imagecolorsforindex ($image_fond, $i);
803
            
807
            
804
            for ($j = 0; $j < count ($att); $j++) {
808
            for ($j = 0; $j < count ($att); $j++) {
805
                
809
                
806
                if (($att[$j]->rouge == $valeurs_RVB['red']) && ($att[$j]->vert == $valeurs_RVB['green']) && ($att[$j]->bleu == $valeurs_RVB['blue'])) {
810
                if (($att[$j]->rouge == $valeurs_RVB['red']) && ($att[$j]->vert == $valeurs_RVB['green']) && ($att[$j]->bleu == $valeurs_RVB['blue'])) {
807
                    $att[$j]->index = $i;
811
                    $att[$j]->index = $i;
808
                    //echo 'ICI'.$att[$j]->id_zone.$att[$j]->index.'<br>';
812
                    //echo 'ICI'.$att[$j]->id_zone.$att[$j]->index.'<br>';
809
                    break;
813
                    break;
810
                }
814
                }
811
            }
815
            }
812
        }
816
        }
813
        
817
        
814
        return $att;
818
        return $att;
815
    }//Fin méthode _construireAssociationIndexZone()
819
    }//Fin méthode _construireAssociationIndexZone()
816
 
820
 
817
    //==============================================================================
821
    //==============================================================================
818
    // METHODE _donnerCouleur()
822
    // METHODE _donnerCouleur()
819
    //------------------------------------------------------------------------------
823
    //------------------------------------------------------------------------------
820
    // Renvoie pour une valeur donnee la couleur a mettre
824
    // Renvoie pour une valeur donnee la couleur a mettre
821
    //------------------------------------------------------------------------------
825
    //------------------------------------------------------------------------------
822
    // ENTREE
826
    // ENTREE
823
    // $miniR : valeur rouge du minimum 
827
    // $miniR : valeur rouge du minimum 
824
    // $miniV : valeur vert du minimum 
828
    // $miniV : valeur vert du minimum 
825
    // $miniB : valeur blue du minimum
829
    // $miniB : valeur blue du minimum
826
    // $maxiR : valeur rouge du maximum 
830
    // $maxiR : valeur rouge du maximum 
827
    // $maxiV : valeur vert du maximum 
831
    // $maxiV : valeur vert du maximum 
828
    // $maxiB : valeur bleu du maximum
832
    // $maxiB : valeur bleu du maximum
829
    // $mediumR : valeur rouge du deuxieme maximum 
833
    // $mediumR : valeur rouge du deuxieme maximum 
830
    // $mediumV : valeur vert du deuxieme maximum 
834
    // $mediumV : valeur vert du deuxieme maximum 
831
    // $mediumB : valeur bleu du deuxieme maximum
835
    // $mediumB : valeur bleu du deuxieme maximum
832
    // $mini  : valeur mini sur l'echelle 
836
    // $mini  : valeur mini sur l'echelle 
833
    // $medium  : valeur juste au dessous du maximum sur l'echelle 
837
    // $medium  : valeur juste au dessous du maximum sur l'echelle 
834
    // $maxi  : valeur maxi sur l'echelle 
838
    // $maxi  : valeur maxi sur l'echelle 
835
    // $val   : valeur dont on cherche la couleur
839
    // $val   : valeur dont on cherche la couleur
836
    //------------------------------------------------------------------------------
840
    //------------------------------------------------------------------------------
837
    // SORTIE 
841
    // SORTIE 
838
    // $couleur array donne la couleur pour la valeur demande ($val)
842
    // $couleur array donne la couleur pour la valeur demande ($val)
839
    //------------------------------------------------------------------------------
843
    //------------------------------------------------------------------------------
840
    
844
    
841
    function _donnerCouleur($miniR, $miniV, $miniB, $mediumR, $mediumV, $mediumB, $maxiR, 
845
    function _donnerCouleur($miniR, $miniV, $miniB, $mediumR, $mediumV, $mediumB, $maxiR, 
842
                            $maxiV, $maxiB, $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs, $tablo_frequences, $nbre_frequences, $val, $formuleColoriage) 
846
                            $maxiV, $maxiB, $mini, $medium, $maxi, $nbre_valeurs, $ecart_type, $moyenne, $tablo_valeurs, $tablo_frequences, $nbre_frequences, $val, $formuleColoriage) 
843
    {
847
    {
844
        if ($formuleColoriage == 'defaut'){
848
        if ($formuleColoriage == 'defaut'){
845
            if ($val == $maxi) {
849
            if ($val == $maxi) {
846
                $couleur['R'] = $maxiR;
850
                $couleur['R'] = $maxiR;
847
                $couleur['V'] = $maxiV;
851
                $couleur['V'] = $maxiV;
848
                $couleur['B'] = $maxiB;
852
                $couleur['B'] = $maxiB;
849
            }
853
            }
850
            if ($val == $mini && $val != $maxi) {
854
            if ($val == $mini && $val != $maxi) {
851
                $couleur['R'] = $miniR;
855
                $couleur['R'] = $miniR;
852
                $couleur['V'] = $miniV;
856
                $couleur['V'] = $miniV;
853
                $couleur['B'] = $miniB;
857
                $couleur['B'] = $miniB;
854
            }
858
            }
855
            if ($maxi/10 > $medium && $maxi/40 < $medium) {
859
            if ($maxi/10 > $medium && $maxi/40 < $medium) {
856
                $diff = $medium - $mini;
860
                $diff = $medium - $mini;
857
                if ($diff > 0 && $val != $medium && $val != $maxi) {
861
                if ($diff > 0 && $val != $medium && $val != $maxi) {
858
                    $diffR   = $mediumR - $miniR;
862
                    $diffR   = $mediumR - $miniR;
859
                    $diffV   = $mediumV - $miniV;
863
                    $diffV   = $mediumV - $miniV;
860
                    $diffB   = $mediumB - $miniB;
864
                    $diffB   = $mediumB - $miniB;
861
                    $variationR =  round ( ($diffR/$diff ), 0 );
865
                    $variationR =  round ( ($diffR/$diff ), 0 );
862
                    $variationV =  round ( ($diffV/$diff ), 0 );
866
                    $variationV =  round ( ($diffV/$diff ), 0 );
863
                    $variationB =  round ( ($diffB/$diff ), 0 );
867
                    $variationB =  round ( ($diffB/$diff ), 0 );
864
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
868
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
865
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
869
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
866
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
870
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
867
                }
871
                }
868
                else if ($val == $medium) {
872
                else if ($val == $medium) {
869
                    $couleur['R'] = $mediumR;
873
                    $couleur['R'] = $mediumR;
870
                    $couleur['V'] = $mediumV;
874
                    $couleur['V'] = $mediumV;
871
                    $couleur['B'] = $mediumB;
875
                    $couleur['B'] = $mediumB;
872
                }
876
                }
873
            }
877
            }
874
            else {
878
            else {
875
                $diff = $maxi - $mini;
879
                $diff = $maxi - $mini;
876
                if ($diff > 0 && $val != $maxi && $val != $mini) {
880
                if ($diff > 0 && $val != $maxi && $val != $mini) {
877
                    $diffR = $maxiR - $miniR;
881
                    $diffR = $maxiR - $miniR;
878
                    $diffV = $maxiV - $miniV;
882
                    $diffV = $maxiV - $miniV;
879
                    $diffB = $maxiB - $miniB;
883
                    $diffB = $maxiB - $miniB;
880
                    $variationR =  round ( ($diffR/$diff ), 0 );
884
                    $variationR =  round ( ($diffR/$diff ), 0 );
881
                    $variationV =  round ( ($diffV/$diff ), 0 );
885
                    $variationV =  round ( ($diffV/$diff ), 0 );
882
                    $variationB =  round ( ($diffB/$diff ), 0 );
886
                    $variationB =  round ( ($diffB/$diff ), 0 );
883
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
887
                    $couleur['R'] = couleur_bornerNbre(($miniR + ($val * $variationR)), 0, 255);
884
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
888
                    $couleur['V'] = couleur_bornerNbre(($miniV + ($val * $variationV)), 0, 255);
885
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
889
                    $couleur['B'] = couleur_bornerNbre(($miniB + ($val * $variationB)), 0, 255);
886
                }
890
                }
887
                else if ($diff == 0){
891
                else if ($diff == 0){
888
                    $couleur['R'] = $mediumR;
892
                    $couleur['R'] = $mediumR;
889
                    $couleur['V'] = $mediumV;
893
                    $couleur['V'] = $mediumV;
890
                    $couleur['B'] = $mediumB;
894
                    $couleur['B'] = $mediumB;
891
                }
895
                }
892
            }
896
            }
893
        }
897
        }
894
        elseif ($formuleColoriage == 'ecart_type') {
898
        elseif ($formuleColoriage == 'ecart_type') {
895
            if ($ecart_type == 0) {
899
            if ($ecart_type == 0) {
896
                    $couleur['R'] = $maxiR;
900
                    $couleur['R'] = $maxiR;
897
                    $couleur['V'] = $maxiV;
901
                    $couleur['V'] = $maxiV;
898
                    $couleur['B'] = $maxiB;
902
                    $couleur['B'] = $maxiB;
899
            }
903
            }
900
            elseif ($ecart_type >= 1 && $ecart_type <= 15) {
904
            elseif ($ecart_type >= 1 && $ecart_type <= 15) {
901
                if ($val == $mini) {
905
                if ($val == $mini) {
902
                    $couleur['R'] = $miniR;
906
                    $couleur['R'] = $miniR;
903
                    $couleur['V'] = $miniV;
907
                    $couleur['V'] = $miniV;
904
                    $couleur['B'] = $miniB;
908
                    $couleur['B'] = $miniB;
905
                }
909
                }
906
                elseif ($val == $medium) {
910
                elseif ($val == $medium) {
907
                    $couleur['R'] = $mediumR;
911
                    $couleur['R'] = $mediumR;
908
                    $couleur['V'] = $mediumV;
912
                    $couleur['V'] = $mediumV;
909
                    $couleur['B'] = $mediumB;
913
                    $couleur['B'] = $mediumB;
910
                }
914
                }
911
                elseif ($val == $maxi) {
915
                elseif ($val == $maxi) {
912
                    $couleur['R'] = $maxiR;
916
                    $couleur['R'] = $maxiR;
913
                    $couleur['V'] = $maxiV;
917
                    $couleur['V'] = $maxiV;
914
                    $couleur['B'] = $maxiB;
918
                    $couleur['B'] = $maxiB;
915
                }
919
                }
916
                else {
920
                else {
917
                    $dif_valeur_maxi_mini = $maxi - $mini;
921
                    $dif_valeur_maxi_mini = $maxi - $mini;
918
                    $diffR = $maxiR - $miniR;
922
                    $diffR = $maxiR - $miniR;
919
                    $diffV = $maxiV - $miniV;
923
                    $diffV = $maxiV - $miniV;
920
                    $diffB = $maxiB - $miniB;
924
                    $diffB = $maxiB - $miniB;
921
                    $variationR =  round ( ($diffR/$dif_valeur_maxi_mini ), 0 );
925
                    $variationR =  round ( ($diffR/$dif_valeur_maxi_mini ), 0 );
922
                    $variationV =  round ( ($diffV/$dif_valeur_maxi_mini ), 0 );
926
                    $variationV =  round ( ($diffV/$dif_valeur_maxi_mini ), 0 );
923
                    $variationB =  round ( ($diffB/$dif_valeur_maxi_mini ), 0 );
927
                    $variationB =  round ( ($diffB/$dif_valeur_maxi_mini ), 0 );
924
                    $couleur['R']=$miniR + ($val * $variationR);
928
                    $couleur['R']=$miniR + ($val * $variationR);
925
                    $couleur['V']=$miniV + ($val * $variationV);
929
                    $couleur['V']=$miniV + ($val * $variationV);
926
                    $couleur['B']=$miniB + ($val * $variationB);
930
                    $couleur['B']=$miniB + ($val * $variationB);
927
                }
931
                }
928
            }
932
            }
929
            elseif ($ecart_type > 15) {
933
            elseif ($ecart_type > 15) {
930
                //Le tableau est trié de la plus petite à la plus grande clé.
934
                //Le tableau est trié de la plus petite à la plus grande clé.
931
                ksort($tablo_frequences);
935
                ksort($tablo_frequences);
932
                $i = 0;
936
                $i = 0;
933
                foreach ($tablo_frequences as $cle => $valeur){
937
                foreach ($tablo_frequences as $cle => $valeur){
934
                    //Nous cherchons la correspondance entre la valeur et la clé.
938
                    //Nous cherchons la correspondance entre la valeur et la clé.
935
                    if ($cle == $val) {
939
                    if ($cle == $val) {
936
                        //Pour faire le Rouge, Vert, Bleu
940
                        //Pour faire le Rouge, Vert, Bleu
937
                        $couleur['R'] = $miniR + ($i/$nbre_frequences) * ($maxiR - $miniR);
941
                        $couleur['R'] = $miniR + ($i/$nbre_frequences) * ($maxiR - $miniR);
938
                        $couleur['V'] = $miniV + ($i/$nbre_frequences) * ($maxiV - $miniV);
942
                        $couleur['V'] = $miniV + ($i/$nbre_frequences) * ($maxiV - $miniV);
939
                        $couleur['B'] = $miniB + ($i/$nbre_frequences) * ($maxiB - $miniB);
943
                        $couleur['B'] = $miniB + ($i/$nbre_frequences) * ($maxiB - $miniB);
940
                    }
944
                    }
941
                    $i++;
945
                    $i++;
942
                }
946
                }
943
            }
947
            }
944
        }
948
        }
945
        
949
        
946
        return $couleur;
950
        return $couleur;
947
    
951
    
948
    }//Fin méthode _donnerCouleur()
952
    }//Fin méthode _donnerCouleur()
949
 
953
 
950
    //==============================================================================
954
    //==============================================================================
951
    // METHODE _remplacerCouleur ($img, $att, $id_zone_geo, $r, $g, $b)
955
    // METHODE _remplacerCouleur ($img, $att, $id_zone_geo, $r, $g, $b)
952
    //
956
    //
953
    // $img is the image, $att an array of carto_colorinfo objects, $id_zone_geo the name
957
    // $img is the image, $att an array of carto_colorinfo objects, $id_zone_geo the name
954
    // of an object of $att, ($r, $g, $b) the new color.
958
    // of an object of $att, ($r, $g, $b) the new color.
955
    //
959
    //
956
    // In the palette of $img, the color matching with $id_zone_geo is modified. 
960
    // In the palette of $img, the color matching with $id_zone_geo is modified. 
957
    //==============================================================================
961
    //==============================================================================
958
    
962
    
959
    function _remplacerCouleur(&$image, &$atta, $id_zone_geo, $rouge, $vert, $bleu, $id_zone_a_reperer) 
963
    function _remplacerCouleur(&$image, &$atta, $id_zone_geo, $rouge, $vert, $bleu, $id_zone_a_reperer) 
960
    {
964
    {
961
        // Nous recherchons la valeur de l'index.
965
        // Nous recherchons la valeur de l'index.
962
        
966
        
963
        $index = -1;
967
        $index = -1;
964
        for ($i = 0; $i < count ($atta); $i++) {
968
        for ($i = 0; $i < count ($atta); $i++) {
965
            if ($atta[$i]->id_zone == $id_zone_geo) {
969
            if ($atta[$i]->id_zone == $id_zone_geo) {
966
                $index = $atta[$i]->index;
970
                $index = $atta[$i]->index;
967
                //Dans le cas où nous voulons repérer une zone sur la carte :
971
                //Dans le cas où nous voulons repérer une zone sur la carte :
968
                if($id_zone_geo == $id_zone_a_reperer) {
972
                if($id_zone_geo == $id_zone_a_reperer) {
969
                    $rouge = 255;
973
                    $rouge = 255;
970
                    $vert = 0;
974
                    $vert = 0;
971
                    $bleu = 0;
975
                    $bleu = 0;
972
                }
976
                }
973
                break;
977
                break;
974
            }
978
            }
975
        }
979
        }
976
        
980
        
977
        // Nous mettons à jour l'image de la carte avec la valeur de l'index.
981
        // Nous mettons à jour l'image de la carte avec la valeur de l'index.
978
        
982
        
979
        if ($index >= 0) {
983
        if ($index >= 0) {
980
            imagecolorset (&$image, $index, $rouge, $vert, $bleu);
984
            imagecolorset (&$image, $index, $rouge, $vert, $bleu);
981
        }
985
        }
982
        
986
        
983
    }//Fin de la méthode _remplacerCouleur
987
    }//Fin de la méthode _remplacerCouleur
984
    
988
    
985
    //==============================================================================
989
    //==============================================================================
986
    // METHODE _donnerIdUnique ()
990
    // METHODE _donnerIdUnique ()
987
    //
991
    //
988
    // Cette méthode privée retourne un identifiant de 32 caractères unique.
992
    // Cette méthode privée retourne un identifiant de 32 caractères unique.
989
    //
993
    //
990
    //==============================================================================
994
    //==============================================================================
991
    
995
    
992
    function _donnerIdUnique() 
996
    function _donnerIdUnique() 
993
    {
997
    {
994
        $id = '';
998
        $id = '';
995
        $id = md5 (uniqid (rand()));
999
        $id = md5 (uniqid (rand()));
996
        
1000
        
997
        return $id;
1001
        return $id;
998
    }//Fin de la méthode _donnerIdUnique()
1002
    }//Fin de la méthode _donnerIdUnique()
999
 
1003
 
1000
 
1004
 
1001
}//Fin de la classe Carto_Carte()
1005
}//Fin de la classe Carto_Carte()
1002
 
1006
 
1003
//==============================================================================
1007
//==============================================================================
1004
// La classe Carto_InformationCouleur n'est utilisée que par la classe carte.
1008
// La classe Carto_InformationCouleur n'est utilisée que par la classe carte.
1005
// C'est une classe privée.
1009
// C'est une classe privée.
1006
// Elle sert à stocker les informations (RVB et index) sur la couleur d'une 
1010
// Elle sert à stocker les informations (RVB et index) sur la couleur d'une 
1007
// zone d'une image.
1011
// zone d'une image.
1008
//==============================================================================
1012
//==============================================================================
1009
 
1013
 
1010
class Carto_InformationCouleur
1014
class Carto_InformationCouleur
1011
{
1015
{
1012
    /*|=============================================================================================|*/
1016
    /*|=============================================================================================|*/
1013
    /*|                                LES ATTRIBUTS DE LA CLASSE                                   |*/
1017
    /*|                                LES ATTRIBUTS DE LA CLASSE                                   |*/
1014
    /*|---------------------------------------------------------------------------------------------|*/
1018
    /*|---------------------------------------------------------------------------------------------|*/
1015
    
1019
    
1016
    var $id_zone;
1020
    var $id_zone;
1017
    var $rouge;
1021
    var $rouge;
1018
    var $vert;
1022
    var $vert;
1019
    var $bleu;
1023
    var $bleu;
1020
    var $index;
1024
    var $index;
1021
    
1025
    
1022
    /*|=============================================================================================|*/
1026
    /*|=============================================================================================|*/
1023
    /*|                                LE CONSTRUCTEUR DE LA CLASSE                                 |*/
1027
    /*|                                LE CONSTRUCTEUR DE LA CLASSE                                 |*/
1024
    /*|---------------------------------------------------------------------------------------------|*/
1028
    /*|---------------------------------------------------------------------------------------------|*/
1025
    
1029
    
1026
    function Carto_InformationCouleur($id_zone, $rouge, $vert, $bleu) 
1030
    function Carto_InformationCouleur($id_zone, $rouge, $vert, $bleu) 
1027
    {
1031
    {
1028
        $this->id_zone    = $id_zone;
1032
        $this->id_zone    = $id_zone;
1029
        $this->rouge     = $rouge;
1033
        $this->rouge     = $rouge;
1030
        $this->vert = $vert;
1034
        $this->vert = $vert;
1031
        $this->bleu    = $bleu;
1035
        $this->bleu    = $bleu;
1032
        $this->index = -1;
1036
        $this->index = -1;
1033
    }
1037
    }
1034
    
1038
    
1035
}//Fin de la classe Carto_InformationCouleur
1039
}//Fin de la classe Carto_InformationCouleur
1036
 
1040
 
1037
 
1041
 
1038
//==============================================================================
1042
//==============================================================================
1039
// FUNCTION carto_errorMsg ()
1043
// FUNCTION carto_errorMsg ()
1040
//
1044
//
1041
// Return an error message about carto management.
1045
// Return an error message about carto management.
1042
//==============================================================================
1046
//==============================================================================
1043
 
1047
 
1044
function carto_errorMsg() 
1048
function carto_errorMsg() 
1045
{
1049
{
1046
    global $PRIVATE_CARTO_ERROR;
1050
    global $PRIVATE_CARTO_ERROR;
1047
 
1051
 
1048
    return $PRIVATE_CARTO_ERROR;
1052
    return $PRIVATE_CARTO_ERROR;
1049
}
1053
}
1050
 
1054
 
1051
//==============================================================================
1055
//==============================================================================
1052
// FUNCTION carto_putErrorImage ()
1056
// FUNCTION carto_putErrorImage ()
1053
//
1057
//
1054
// Dump a default error image.
1058
// Dump a default error image.
1055
//==============================================================================
1059
//==============================================================================
1056
 
1060
 
1057
function carto_putErrorImage() 
1061
function carto_putErrorImage() 
1058
{
1062
{
1059
    $img = '47494638396120002000800100ff000000006621f90401000001002c000000002000'.
1063
    $img = '47494638396120002000800100ff000000006621f90401000001002c000000002000'.
1060
            '200040026d848fa99be11f009c53524373b41ae2da65dcf345e1693aa536aae77ab1'.
1064
            '200040026d848fa99be11f009c53524373b41ae2da65dcf345e1693aa536aae77ab1'.
1061
            'e1d7a2a22ad5f60deb6fe54bc958418f0b05bb9190bee2f1327276a2c91db16a855a'.
1065
            'e1d7a2a22ad5f60deb6fe54bc958418f0b05bb9190bee2f1327276a2c91db16a855a'.
1062
            'a4489c31bb24d5b8614fb32b2a9ea7d228738785dab673e7f81554b395682008dc52'.
1066
            'a4489c31bb24d5b8614fb32b2a9ea7d228738785dab673e7f81554b395682008dc52'.
1063
            '4236b4210416c390a8a85000003b';
1067
            '4236b4210416c390a8a85000003b';
1064
    
1068
    
1065
    header ('Content-Type: image/gif');
1069
    header ('Content-Type: image/gif');
1066
    
1070
    
1067
    echo gs_hex2bin($img);
1071
    echo gs_hex2bin($img);
1068
}
1072
}
1069
 
1073
 
1070
//==============================================================================
1074
//==============================================================================
1071
//==============================================================================
1075
//==============================================================================
1072
// Les fonctions qui suivent permettent de recuperer des infos (nom de l'image,
1076
// Les fonctions qui suivent permettent de recuperer des infos (nom de l'image,
1073
// du masque, du niveau ou du titre) d'une carte.
1077
// du masque, du niveau ou du titre) d'une carte.
1074
//==============================================================================
1078
//==============================================================================
1075
//==============================================================================
1079
//==============================================================================
1076
 
1080
 
1077
function carto_consulterTitreCarte($id_carte) 
1081
function carto_consulterTitreCarte($id_carte) 
1078
{
1082
{
1079
    global $NOM_FICHIER;
1083
    global $NOM_FICHIER;
1080
    
1084
    
1081
    $requete =
1085
    $requete =
1082
    'SELECT * '.
1086
    'SELECT * '.
1083
    ' FROM carto_DESCRIPTION_CARTE'.
1087
    ' FROM carto_DESCRIPTION_CARTE'.
1084
    ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1088
    ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1085
    
1089
    
1086
    $resultat = mysql_query ($requete) or die('
1090
    $resultat = mysql_query ($requete) or die('
1087
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1091
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1088
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1092
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1089
            '<b>Nom fonction : </b> carto_consulterTitreCarte<br/>'.
1093
            '<b>Nom fonction : </b> carto_consulterTitreCarte<br/>'.
1090
            '<b>Requete : </b>'.$requete.
1094
            '<b>Requete : </b>'.$requete.
1091
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1095
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1092
    
1096
    
1093
    $ligne = mysql_fetch_object ($resultat);
1097
    $ligne = mysql_fetch_object ($resultat);
1094
    
1098
    
1095
    $titre_carte = $ligne->CDC_Titre_carte;
1099
    $titre_carte = $ligne->CDC_Titre_carte;
1096
    
1100
    
1097
    return $titre_carte;
1101
    return $titre_carte;
1098
}
1102
}
1099
 
1103
 
1100
function carto_consulterFichierFond($id_carte) 
1104
function carto_consulterFichierFond($id_carte) 
1101
{
1105
{
1102
    global $NOM_FICHIER;
1106
    global $NOM_FICHIER;
1103
    
1107
    
1104
    $requete =
1108
    $requete =
1105
        'SELECT * '.
1109
        'SELECT * '.
1106
        ' FROM carto_DESCRIPTION_CARTE'.
1110
        ' FROM carto_DESCRIPTION_CARTE'.
1107
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1111
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1108
    
1112
    
1109
    $resultat = mysql_query ($requete) or die('
1113
    $resultat = mysql_query ($requete) or die('
1110
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1114
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1111
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1115
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1112
            '<b>Nom fonction : </b> carto_consulterFichierFond<br/>'.
1116
            '<b>Nom fonction : </b> carto_consulterFichierFond<br/>'.
1113
            '<b>Requete : </b>'.$requete.
1117
            '<b>Requete : </b>'.$requete.
1114
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1118
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1115
    
1119
    
1116
    $ligne = mysql_fetch_object ($resultat);
1120
    $ligne = mysql_fetch_object ($resultat);
1117
    
1121
    
1118
    $nom_fichier_carte_fond = $ligne->CDC_Carte_fond;
1122
    $nom_fichier_carte_fond = $ligne->CDC_Carte_fond;
1119
    
1123
    
1120
    return $nom_fichier_carte_fond;
1124
    return $nom_fichier_carte_fond;
1121
}
1125
}
1122
 
1126
 
1123
function carto_consulterFichierMasque($id_carte) 
1127
function carto_consulterFichierMasque($id_carte) 
1124
{
1128
{
1125
    global $NOM_FICHIER;
1129
    global $NOM_FICHIER;
1126
    
1130
    
1127
    $requete =
1131
    $requete =
1128
        'SELECT * '.
1132
        'SELECT * '.
1129
        ' FROM carto_DESCRIPTION_CARTE'.
1133
        ' FROM carto_DESCRIPTION_CARTE'.
1130
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1134
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1131
    
1135
    
1132
    $resultat = mysql_query ($requete) or die('
1136
    $resultat = mysql_query ($requete) or die('
1133
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1137
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1134
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1138
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1135
            '<b>Nom fonction : </b> carto_consulterFichierMasque<br/>'.
1139
            '<b>Nom fonction : </b> carto_consulterFichierMasque<br/>'.
1136
            '<b>Requete : </b>'.$requete.
1140
            '<b>Requete : </b>'.$requete.
1137
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1141
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1138
    
1142
    
1139
    $ligne = mysql_fetch_object ($resultat);
1143
    $ligne = mysql_fetch_object ($resultat);
1140
    
1144
    
1141
    $nom_fichier_carte_masque = $ligne->CDC_Carte_masque;
1145
    $nom_fichier_carte_masque = $ligne->CDC_Carte_masque;
1142
    
1146
    
1143
    return $nom_fichier_carte_masque;
1147
    return $nom_fichier_carte_masque;
1144
}
1148
}
1145
 
1149
 
1146
function carto_consulterTypeZoneCarte($id_carte) 
1150
function carto_consulterTypeZoneCarte($id_carte) 
1147
{
1151
{
1148
    global $NOM_FICHIER;
1152
    global $NOM_FICHIER;
1149
    
1153
    
1150
    $requete =
1154
    $requete =
1151
        'SELECT * '.
1155
        'SELECT * '.
1152
        ' FROM carto_DESCRIPTION_CARTE'.
1156
        ' FROM carto_DESCRIPTION_CARTE'.
1153
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1157
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1154
    
1158
    
1155
    $resultat = mysql_query($requete) or die('
1159
    $resultat = mysql_query($requete) or die('
1156
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1160
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1157
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1161
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1158
            '<b>Nom fonction : </b> carto_consulterTypeZoneCarte<br/>'.
1162
            '<b>Nom fonction : </b> carto_consulterTypeZoneCarte<br/>'.
1159
            '<b>Requete : </b>'.$requete.
1163
            '<b>Requete : </b>'.$requete.
1160
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1164
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1161
    
1165
    
1162
    $ligne = mysql_fetch_object($resultat);
1166
    $ligne = mysql_fetch_object($resultat);
1163
    
1167
    
1164
    $type_zone_carte = $ligne->CDC_Type_zone_carte;
1168
    $type_zone_carte = $ligne->CDC_Type_zone_carte;
1165
    
1169
    
1166
    return $type_zone_carte;
1170
    return $type_zone_carte;
1167
}
1171
}
1168
 
1172
 
1169
function carto_consulterIdZoneGeoCarte($id_carte) 
1173
function carto_consulterIdZoneGeoCarte($id_carte) 
1170
{
1174
{
1171
    global $NOM_FICHIER;
1175
    global $NOM_FICHIER;
1172
    
1176
    
1173
    $requete =
1177
    $requete =
1174
        'SELECT * '.
1178
        'SELECT * '.
1175
        ' FROM carto_DESCRIPTION_CARTE'.
1179
        ' FROM carto_DESCRIPTION_CARTE'.
1176
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1180
        ' WHERE CDC_ID_Carte = "'.$id_carte.'"';
1177
    
1181
    
1178
    $resultat = mysql_query($requete) or die('
1182
    $resultat = mysql_query($requete) or die('
1179
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1183
            <H2 style="text-align: center; font-weight: bold; font-size: 26px;">Erreur de requête</H2>'.
1180
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1184
            '<b>Nom du fichier : </b> '.$NOM_FICHIER.'<br/>'.
1181
            '<b>Nom fonction : </b> carto_consulterIdZoneGeoCarte<br/>'.
1185
            '<b>Nom fonction : </b> carto_consulterIdZoneGeoCarte<br/>'.
1182
            '<b>Requete : </b>'.$requete.
1186
            '<b>Requete : </b>'.$requete.
1183
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1187
            '<br/><br/><b>Erreur : </b>'.mysql_error());
1184
    
1188
    
1185
    $ligne = mysql_fetch_object ($resultat);
1189
    $ligne = mysql_fetch_object ($resultat);
1186
    
1190
    
1187
    $id_zone_carte = $ligne->CDC_ID_Zone_geo_carte;
1191
    $id_zone_carte = $ligne->CDC_ID_Zone_geo_carte;
1188
    return $id_zone_carte;
1192
    return $id_zone_carte;
1189
}
1193
}
1190
 
1194
 
1191
//-- Fin du code source  ------------------------------------------------------------
1195
//-- Fin du code source  ------------------------------------------------------------
1192
/*
1196
/*
1193
* $Log: not supported by cvs2svn $
1197
* $Log: not supported by cvs2svn $
-
 
1198
* Revision 1.8  2007/04/11 08:30:12  neiluj
-
 
1199
* remise en état du CVS...
-
 
1200
*
1194
* Revision 1.5  2006/12/01 13:23:16  florian
1201
* Revision 1.5  2006/12/01 13:23:16  florian
1195
* integration annuaire backoffice
1202
* integration annuaire backoffice
1196
*
1203
*
1197
* Revision 1.4  2006/04/04 12:23:05  florian
1204
* Revision 1.4  2006/04/04 12:23:05  florian
1198
* modifs affichage fiches, généricité de la carto, modification totale de l'appli annuaire
1205
* modifs affichage fiches, généricité de la carto, modification totale de l'appli annuaire
1199
*
1206
*
1200
* Revision 1.3  2005/12/07 14:59:14  alexandre_tb
1207
* Revision 1.3  2005/12/07 14:59:14  alexandre_tb
1201
* suppression d'un echo
1208
* suppression d'un echo
1202
*
1209
*
1203
* Revision 1.2  2005/11/24 16:17:52  florian
1210
* Revision 1.2  2005/11/24 16:17:52  florian
1204
* changement template inscription + modifs carto
1211
* changement template inscription + modifs carto
1205
*
1212
*
1206
* Revision 1.1  2005/09/22 14:02:49  ddelon
1213
* Revision 1.1  2005/09/22 14:02:49  ddelon
1207
* nettoyage annuaire et php5
1214
* nettoyage annuaire et php5
1208
*
1215
*
1209
* Revision 1.2  2005/09/22 13:30:49  florian
1216
* Revision 1.2  2005/09/22 13:30:49  florian
1210
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!)
1217
* modifs pour compatibilité XHTML Strict + corrections de bugs (mais ya encore du boulot!!)
1211
*
1218
*
1212
* Revision 1.1  2004/12/15 13:30:20  alex
1219
* Revision 1.1  2004/12/15 13:30:20  alex
1213
* version initiale
1220
* version initiale
1214
*
1221
*
1215
* Revision 1.17  2003/05/16 13:17:40  jpm
1222
* Revision 1.17  2003/05/16 13:17:40  jpm
1216
* Correction d'une erreur (des guillemets en trop).
1223
* Correction d'une erreur (des guillemets en trop).
1217
*
1224
*
1218
* Revision 1.16  2003/03/14 14:12:14  jpm
1225
* Revision 1.16  2003/03/14 14:12:14  jpm
1219
* Correction bug : le nom de la zone ne restait pas dans la liste déroulante.
1226
* Correction bug : le nom de la zone ne restait pas dans la liste déroulante.
1220
*
1227
*
1221
* Revision 1.15  2003/03/11 14:49:47  jpm
1228
* Revision 1.15  2003/03/11 14:49:47  jpm
1222
* Simplification de l'interface.
1229
* Simplification de l'interface.
1223
*
1230
*
1224
* Revision 1.14  2003/03/07 15:10:24  jpm
1231
* Revision 1.14  2003/03/07 15:10:24  jpm
1225
* Ajout de commentaires : "à faire"
1232
* Ajout de commentaires : "à faire"
1226
*
1233
*
1227
* Revision 1.13  2003/03/04 16:14:06  alex
1234
* Revision 1.13  2003/03/04 16:14:06  alex
1228
* Utilisation de la fonction cxt_clearVariable à la place de cxt_clear
1235
* Utilisation de la fonction cxt_clearVariable à la place de cxt_clear
1229
*
1236
*
1230
* Revision 1.12  2003/03/04 08:09:39  jpm
1237
* Revision 1.12  2003/03/04 08:09:39  jpm
1231
* Ajout suppression des fichiers carto du dossier carto temporaire.
1238
* Ajout suppression des fichiers carto du dossier carto temporaire.
1232
*
1239
*
1233
* Revision 1.11  2003/02/26 12:12:38  jpm
1240
* Revision 1.11  2003/02/26 12:12:38  jpm
1234
* Ajout de la gestion des listes déroulantes représentant la zone géographique
1241
* Ajout de la gestion des listes déroulantes représentant la zone géographique
1235
* à éditer.
1242
* à éditer.
1236
*
1243
*
1237
* Revision 1.10  2003/02/21 13:50:57  jpm
1244
* Revision 1.10  2003/02/21 13:50:57  jpm
1238
* Mise à jour nouvel objet Carto_Carte.
1245
* Mise à jour nouvel objet Carto_Carte.
1239
*
1246
*
1240
* Revision 1.8  2003/02/14 08:01:14  jpm
1247
* Revision 1.8  2003/02/14 08:01:14  jpm
1241
* Changement des noms de méthode selon les recommandations de PEAR.
1248
* Changement des noms de méthode selon les recommandations de PEAR.
1242
* Ajout d'attributs à la classe.
1249
* Ajout d'attributs à la classe.
1243
* Ajout de la possibilité de redéfinir les couleurs de coloriage d'une carte.
1250
* Ajout de la possibilité de redéfinir les couleurs de coloriage d'une carte.
1244
* Ajout de la possibilité de désigner une formule mathématique de coloriage.
1251
* Ajout de la possibilité de désigner une formule mathématique de coloriage.
1245
*
1252
*
1246
* Revision 1.7  2003/02/12 18:15:56  jpm
1253
* Revision 1.7  2003/02/12 18:15:56  jpm
1247
* Meilleure gestion de l'obtentions des valeurs minimum, medium et maximum
1254
* Meilleure gestion de l'obtentions des valeurs minimum, medium et maximum
1248
* pour l'ensemble des zones géographiques d'une carte.
1255
* pour l'ensemble des zones géographiques d'une carte.
1249
* Ajout de commentaires.
1256
* Ajout de commentaires.
1250
* Meilleure gestion des erreurs de requêtes.
1257
* Meilleure gestion des erreurs de requêtes.
1251
*
1258
*
1252
*
1259
*
1253
*/
1260
*/
1254
?>
1261
?>