Subversion Repositories Sites.tela-botanica.org

Rev

Rev 5 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5 david 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.1                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This library is free software; you can redistribute it and/or                                        |
9
// | modify it under the terms of the GNU Lesser General Public                                           |
10
// | License as published by the Free Software Foundation; either                                         |
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
12
// |                                                                                                      |
13
// | This library is distributed in the hope that it will be useful,                                      |
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
16
// | Lesser General Public License for more details.                                                      |
17
// |                                                                                                      |
18
// | You should have received a copy of the GNU Lesser General Public                                     |
19
// | License along with this library; if not, write to the Free Software                                  |
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// +------------------------------------------------------------------------------------------------------+
22
// CVS : $Id: inscription.class.php,v 1.3 2005/05/13 13:48:38 alex Exp $
23
// CVS : $Id: inscription.class.php,v 1.3 2005/05/13 13:48:38 alex Exp $
24
/**
25
* Fonctions du module inscription
26
*
27
* Fonctions du module inscription
28
*
29
*@package inscription
30
//Auteur original :
31
*@author        Alexandre Granier <alexandre@tela-botanica.org>
32
//Autres auteurs :
33
*@author        Aucun
34
*@copyright     Tela-Botanica 2000-2004
35
*@version       $Revision: 1.3 $ $Date: 2005/05/13 13:48:38 $
36
*@version       $Revision: 1.3 $ $Date: 2005/05/13 13:48:38 $
37
// +------------------------------------------------------------------------------------------------------+
38
*/
39
 
40
// +------------------------------------------------------------------------------------------------------+
41
// |                                            ENTETE du PROGRAMME                                       |
42
// +------------------------------------------------------------------------------------------------------+
43
 
44
require_once 'HTML/QuickForm.php' ;
45
require_once 'HTML/QuickForm/checkbox.php' ;
46
require_once 'HTML/QuickForm/password.php' ;
47
 
48
// +------------------------------------------------------------------------------------------------------+
49
// |                                           LISTE de FONCTIONS                                         |
50
// +------------------------------------------------------------------------------------------------------+
51
 
52
class HTML_formulaireInscription extends HTML_Quickform {
53
 
54
 
55
    /**
56
     *  Constructeur
57
     *
58
     * @param string formName Le nom du formulaire
59
     * @param string method Méthode post ou get
60
     * @param string action L'action du formulaire.
61
     * @param int target La cible.
62
     * @param Array attributes Les attributs HTML en plus.
63
     * @param bool trackSubmit ??
64
     * @return void
65
     * @access public
66
     */
67
 
68
    function HTML_forumlaireInscription ( $formName,  $method = "post",  $action,  $target = "_self",  $attributes,  $trackSubmit = false ) {
69
        HTML_Quickform::HTML_Quickform($formName, $method, $action, $target, $attributes, $trackSubmit) ;
70
    }
71
 
72
    /**
73
     *
74
     *
75
     * @return void
76
     * @access public
77
     */
78
    function construitFormulaire($url, $liste_pays)
79
    {
80
    $squelette =& $this->defaultRenderer();
81
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
82
 
83
    $modele_element_debut = '<li class="groupe_formulaire">'."\n".'<span class="inscription_label1">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'.
84
                                    "\n".'{element}'."\n".''."\n".
85
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
86
                                    ''."\n" ;
87
    $modele_element_fin = "\n".'<span class="inscription_label2">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'.
88
                                    "\n".'{element}'."\n".''."\n".
89
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
90
                                    '</li>'."\n" ;
91
 
92
    $squelette->setElementTemplate( '<li class="liste_inscription">'."\n".'<span class="inscription_label">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'.
93
                                    "\n".'{element}'."\n".''."\n".
94
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
95
                                    '</li>'."\n");
96
    //$squelette->setElementTemplate(, ) ;
97
    // Les modèles pour les champs qui se tienne 2 par ligne
98
    foreach (array('mot_de_passe', 'nom', 'cp') as $valeur) $squelette->setElementTemplate( $modele_element_debut, $valeur);
99
    foreach (array('password_repete', 'prenom', 'ville') as $valeur) $squelette->setElementTemplate( $modele_element_fin, $valeur);
100
 
101
    $squelette->setElementTemplate( '<ul><li class="groupe_bouton">{element}', 'annuler');
102
    $squelette->setElementTemplate( '{element}</li></ul>', 'valider');
103
 
104
    $squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n");
105
 
106
    $fieldset_debut =    '<fieldset>'."\n".
107
                            '<legend>'.INS_AJOUT_MEMBRE.'</legend>'."\n".
108
                            '<ul>'."\n";
109
    $this->addElement('html', $fieldset_debut);
110
    $this->addElement ('text', 'email', INS_EMAIL) ;
111
    $this->addRule ('email', INS_EMAIL_REQUIS, 'required','', 'client') ;
112
    $this->addRule ('email', INS_MAIL_INCORRECT, 'email', '', 'client') ;
113
    $this->registerRule('doublon', 'callback', 'verif_doublonMail') ;
114
    $this->addRule ('email', INS_MAIL_DOUBLE, 'doublon', true) ;
115
 
116
    $this->addElement('password', 'mot_de_passe', INS_MOT_DE_PASSE);
117
    $this->addElement('password', 'password_repete', INS_REPETE_MOT_DE_PASSE);
118
    $this->addRule ('mot_de_passe', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
119
    $this->addRule ('password_repete', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
120
 
121
    $this->addElement('text', 'nom', INS_NOM);
122
    $this->addElement('text', 'prenom', INS_PRENOM);
123
    $this->addRule ('nom', INS_NOM_REQUIS, 'required', '', 'client') ;
124
    $this->addRule ('prenom', INS_PRENOM_REQUIS, 'required', '', 'client') ;
125
 
126
    /* On enlève le champs non wiki, on va le générer
127
    $this->addElement ('text', 'nomwiki', INS_NOM_WIKI) ;
128
    $this->addRule ('nomwiki', INS_MAUVAIS_NOM_WIKI, 'regex', '/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/', 'client') ;
129
    */
130
    $this->addElement ('text', 'adresse_1', INS_ADRESSE_1) ;
131
    $this->addElement ('text', 'adresse_2', INS_ADRESSE_2) ;
132
    $this->addElement ('text', 'region', INS_REGION) ;
133
 
134
    $this->addElement('text', 'cp', INS_CODE_POSTAL) ;
135
    $this->addElement('text', 'ville', INS_VILLE) ;
136
    $this->addRule ('cp', INS_CODE_POSTAL_REQUIS, 'required', '', 'client') ;
137
    $this->addRule ('ville', INS_VILLE_REQUIS, 'required', '', 'client') ;
138
 
139
        // L'élément pays est construit à partir de la table gen_COUNTRY
140
 
141
//    $this->addElement ('select', 'pays', INS_PAYS, $liste_pays) ;
142
 
143
 
144
    $s =& $this->createElement('select','pays',INS_PAYS);
145
    $s->loadArray($liste_pays,'fr');
146
    $this->addElement($s);
147
 
148
    $element_lettre = &new HTML_QuickForm_checkbox ('lettre', '', INS_LETTRE) ;
149
    $this->addElement($element_lettre) ;
150
 
151
    $this->addElement ('text', 'site', INS_SITE_INTERNET) ;
152
 
153
    $fieldset_fin =    '</ul>'."\n".
154
                        '</fieldset>'."\n";
155
    $this->addElement('html', $fieldset_fin);
156
 
157
     $fieldset_debut =    '<fieldset>'."\n".
158
                            '<legend>'.INS_ADHERENT.'</legend>'."\n".
159
                            '<ul>'."\n";
160
    $this->addElement('html', $fieldset_debut);
161
 
162
    $this->addElement ('text', 'organisme', INS_ORGANISME) ;
163
    $this->addElement ('text', 'fonction', INS_FONCTION) ;
164
    $fieldset_fin =    '</ul>'."\n".
165
                        '</fieldset>'."\n";
166
    $this->addElement('html', $fieldset_fin);
167
 
168
    $fieldset_debut = '<fieldset>'."\n".
169
                            '<legend>'.INS_ETES_BOTANISTE.'</legend>'."\n".
170
                            '<ul>'."\n";
171
    $this->addElement('html', $fieldset_debut);
172
 
173
    // requete pour trouver les niveaux en botanique
174
    $requete = "select * from annuaire_LABEL_NIV" ;
175
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
176
    if (DB::isError($resultat)) {
177
        die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
178
    }
179
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
180
        $this->addElement ('radio', 'niveau', '', $ligne->LABEL_NIV, $ligne->ID_LABEL_NIV) ;
181
    }
182
 
183
    $fieldset_fin =    '</ul>'."\n".
184
                        '</fieldset>'."\n";
185
    $this->addElement('html', $fieldset_fin);
186
 
187
 
188
    // L'activité professionnelle
189
    $fieldset_debut = '<fieldset>'."\n".
190
                            '<legend>'.INS_ACTIVITE_PROFESSIONNELLE.'</legend>'."\n".
191
                            '<ul>'."\n";
192
    $this->addElement('html', $fieldset_debut);
193
 
194
 
195
    // requete pour trouver les niveaux en botanique
196
    $requete = "select * from annuaire_LABEL_ACT" ;
197
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
198
    if (DB::isError($resultat)) {
199
        die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
200
    }
201
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
202
        $this->addElement ('radio', 'activite', '', $ligne->LABEL_ACT, $ligne->ID_LABEL_ACT) ;
203
    }
204
 
205
    $fieldset_fin =    '</ul>'."\n".
206
                        '</fieldset>'."\n";
207
    $this->addElement('html', $fieldset_fin);
208
 
209
    // L'activité professionnelle
210
    $fieldset_debut = '<fieldset>'."\n".
211
                            '<legend>'.INS_MEMBRE_ASSO.'</legend>'."\n".
212
                            '<ul>'."\n";
213
    $this->addElement('html', $fieldset_debut);
214
 
215
    // requete pour trouver les niveaux en botanique
216
    $requete = "select * from annuaire_LABEL_ASS" ;
217
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
218
    if (DB::isError($resultat)) {
219
        die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
220
    }
221
    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
222
        $this->addElement ('radio', 'asso', '', $ligne->LABEL_ASS, $ligne->ID_LABEL_ASS) ;
223
    }
224
 
225
    $fieldset_fin =    '</ul>'."\n".
226
                        '</fieldset>'."\n";
227
    $this->addElement('html', $fieldset_fin);
228
 
229
    // Les spécialité
230
    $fieldset_debut = '<fieldset>'."\n".
231
                            '<legend>'.INS_SPECIALISTE.'</legend>'."\n".
232
                            '<ul>'."\n";
233
    $this->addElement('html', $fieldset_debut);
234
    $this->addElement ('textarea', 'specialite', '', array ('cols' => 50, 'rows' => 4)) ;
235
    $fieldset_fin =    '</ul>'."\n".
236
                        '</fieldset>'."\n";
237
    $this->addElement('html', $fieldset_fin);
238
 
239
 
240
    // Les spécialité géographiques
241
    $fieldset_debut = '<fieldset>'."\n".
242
                            '<legend>'.INS_SPE_ZONE.'</legend>'."\n".
243
                            '<ul>'."\n";
244
    $this->addElement('html', $fieldset_debut);
245
    $this->addElement ('textarea', 'specialite_geo', '', array ('cols' => 50, 'rows' => 4)) ;
246
    $fieldset_fin =    '</ul>'."\n".
247
                        '</fieldset>'."\n";
248
    $this->addElement('html', $fieldset_fin);
249
 
250
 
251
    $this->addElement ('link', 'annuler', '', preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()), INS_ANNULER) ;
252
    $this->addElement ('submit', 'valider', INS_VALIDER) ;
253
 
254
    $this->setRequiredNote(INS_NOTE_REQUIS) ;
255
    } // end of member function construitFormulaire
256
 
257
    /** Modifie le formulaire pour l'adapter au cas des structures
258
     *
259
     *
260
     * @return void
261
     * @access public
262
     */
263
    function formulaireStructure()
264
    {
265
 
266
        $this->removeElement('email', false) ;
267
        $mail = & HTML_QuickForm::createElement ('text', 'email', INS_MAIL_STRUCTURE) ;
268
        $this->insertElementBefore ($mail, 'mot_de_passe') ;
269
        $nom_structure = & HTML_QuickForm::createElement ('text', 'nom', INS_NOM_STRUCTURE) ;
270
        $this->insertElementBefore ($nom_structure, 'email') ;
271
        $this->removeElement ('site', false) ;
272
        $site_structure = & HTML_QuickForm::createElement ('text', 'site', INS_SITE_STRUCTURE) ;
273
        $this->insertElementBefore ($site_structure, 'pays') ;
274
        $this->addElement ('hidden', 'est_structure', 1) ;
275
        $sigle_structure = & HTML_QuickForm::createElement ('text', 'sigle_structure', INS_SIGLE_STRUCTURE) ;
276
        $this->insertElementBefore ($sigle_structure, 'nom') ;
277
        $this->addRule ('sigle_structure', INS_SIGLE_REQUIS, 'required', '', 'client') ;
278
    }
279
    /**
280
     *
281
     *
282
     * @return string
283
     * @access public
284
     */
285
    function toHTML( )
286
    {
287
        $res = HTML_QuickForm::toHTML() ;
288
        return $res ;
289
    } // end of member function toHTML
290
 
291
 
292
 
293
}
294
 
295
class ListeDePays extends PEAR{
296
 
297
    var $_db ;
298
    /** Constructeur
299
     *  Vérifie l'existance de la table gen_pays_traduction
300
     *
301
     *  @param  DB  Un objet PEAR::DB
302
     * @return
303
     */
304
 
305
    function ListeDePays (&$objetDB) {
306
        $this->_db = $objetDB ;
307
        $requete = "show tables" ;
308
        $resultat = $objetDB->query ($requete) ;
309
        if (DB::isError ($resultat)) {
310
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
311
        }
312
        while ($ligne = $resultat->fetchRow()) {
313
            if ($ligne[0] == 'gen_COUNTRY') {
314
                return ;
315
            }
316
        }
317
        return $this->raiseError ('La table gen_COUNTRY n\'est pas présente dans la base de donnée !') ;
318
    }
319
 
320
    /** Renvoie la liste des pays traduite
321
     *
322
     *  @param  string  une chaine de type i18n ou une chaine code iso langue (fr_FR ou fr ou FR)
323
     * @return  un tableau contenant en clé, le code iso du pays, en majuscule et en valeur le nom du pays traduit
324
     */
325
 
326
    function getListePays ($i18n) {
327
        if (strlen($i18n) == 2) {
328
            $i18n = strtolower($i18n)."-".strtoupper($i18n) ;
329
        }
101 alex 330
        $requete = "select GC_ID, GC_NAME from gen_COUNTRY where GC_LOCALE='fr' order by GC_NAME" ;
5 david 331
        $resultat = $this->_db->query ($requete) ;
332
        if (DB::isError ($resultat)) {
333
            die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
334
        }
335
        if ($resultat->numRows() == 0) {
336
            return $this->raiseError('Le code fourni ne correspond à aucun pays ou n\'est pas dans la table!') ;
337
        }
338
        $retour = array() ;
339
        while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
340
            $retour[$ligne->GC_ID] = $ligne->GC_NAME;
341
        }
342
        return $retour ;
343
    }
344
}
345
 
346
 
347
 
348
/* +--Fin du code ----------------------------------------------------------------------------------------+
349
* Revision 1.1  2004/06/18 09:20:47  alex
350
* version initiale
351
*
352
*
353
* +-- Fin du code ----------------------------------------------------------------------------------------+
354
*/
355
 
356
?>