Subversion Repositories Sites.gentiana.org

Rev

Rev 40 | Details | Compare with Previous | Last modification | View Log | RSS feed

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