Subversion Repositories Sites.gentiana.org

Rev

Rev 44 | Go to most recent revision | Details | 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
* Inscription
23
*
24
* Un module d'inscription, en général ce code est spécifique à un site web.
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.php,v 1.3 2005/03/21 16:50:21 alex Exp $
33
// +------------------------------------------------------------------------------------------------------+
34
*/
35
 
36
// +------------------------------------------------------------------------------------------------------+
37
// |											ENTETE du PROGRAMME									   |
38
// +------------------------------------------------------------------------------------------------------+
39
include_once PAP_CHEMIN_API_PEAR.'Mail.php' ;
40
require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm.php' ;
41
require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/checkbox.php' ;
42
require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/password.php' ;
43
 
44
if (isset($lang)) {
45
	include_once "client/inscription/langues/ins_langue_$lang.inc.php";
46
} else {
47
	include_once 'client/inscription/langues/ins_langue_fr.inc.php' ;
48
}
49
include_once 'client/inscription/configuration/ins_config.inc.php';
50
include_once 'client/inscription/bibliotheque/inscription.fonct.php';
51
include_once INS_CHEMIN_FICHIER.'bibliotheque/inscription.class.php';
52
 
53
// Ajout d'une feuille de style externe
54
GEN_stockerStyleExterne ('inscription', 'client/inscription/inscription.css') ;
55
 
56
// +------------------------------------------------------------------------------------------------------+
57
// |										   LISTE de FONCTIONS										 |
58
// +------------------------------------------------------------------------------------------------------+
59
 
60
function afficherContenuTete() {
61
	$retour = '<h1 class="titre1_inscription">Inscription à Gentiana</h1>';
62
	return ;
63
}
64
 
65
//  ================ Note =======================
66
//  La variable action sert à définir ce qui est demandé (inscription, modification d'inscription, suppression ...
67
//  Elle est appelé avec $_REQUEST car elle peut aussi bien venir d'un formulaire que d'un lien.
68
// ==============================================
69
 
70
 
71
/**
72
 *
73
 * @global  AUTH	Un pointeur vers un objet PEAR::Auth
74
 * @global  ins_url Un pointeur vers un objet PEAR::Net_URL
75
 * @return  string  Le contenu de l'application inscription
76
 */
77
function afficherContenuCorps() {
78
 
79
	$url = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
80
	// Attibution  de l'action par défaut à effectuer.
81
	if (!isset ($_REQUEST['action'])) {
82
		$_REQUEST['action'] = 'inscription';
83
	}
84
	$res = '' ;
85
	$est_loggue = true ;
86
 
87
	// ... tentative de déconnection
88
	if (isset ($_GET['logout']) && $_GET['logout'] == 1) {
89
		$GLOBALS['AUTH']->logout() ;
90
		$_POST['username'] = '' ;
91
		$_POST['password'] = '' ;
92
		//return AUTH_formulaire_login() ;
93
	}
94
 
95
	// ...supprimer l'inscription
96
	if (isset ($_POST['supprimer'])) {
97
		$mail_utilisateur = $GLOBALS['AUTH']->getUsername();
98
		$id_utilisateur = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
99
		$bool_inscription_lettre = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE);
100
		$resultat = $GLOBALS['AUTH']->removeUser($mail_utilisateur) ;
101
 
102
		if (PEAR::isError($resultat)) {
103
			die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
104
		}
105
 
106
		// Désinscription de la lettre d'info
107
		if (INS_UTILISE_LISTE) {
108
			if ($bool_inscription_lettre == 1) {
109
				inscription_lettre(INS_MAIL_DESINSCRIPTION_LISTE) ;
110
			}
111
		}
112
		$GLOBALS['AUTH']->logout() ;
113
 
114
		// Ajout d'une ligne dans les statistiques
115
		if (INS_UTILISE_STAT) {
116
			$requete = 'INSERT INTO '.INS_TABLE_STATISTIQUE.' SET '.INS_STATS_CHAMPS_DATE.'=NOW(), '.INS_STATS_CHAMPS_ACTION.'="del"' ;
117
			$resultat = $GLOBALS['ins_db']->query ($requete) ;
118
			if (DB::isError ($resultat)) {
119
				die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
120
			}
121
		}
122
		//return AUTH_formulaire_login() ;
123
	}
124
 
125
	// ... envoie de mot de passe
126
	if ($_REQUEST['action'] == 'sendpasswd') {
127
		envoie_passe();
128
	}
129
 
130
	// ...oublie de mot de passe
131
	if (preg_match('/^(?:mdp_oubli|sendpasswd)$/', $_REQUEST['action'])) {
132
		return message_erreur(false);
133
	}
134
 
135
	// ...inscription dans la base si l'utilisateur clique sur le lien du mail
136
	if ($_GET['action'] == 'ajouter' && isset($_GET['id']) && !$GLOBALS['AUTH']->getAuth()) {
137
		$requete = 'SELECT id_donnees FROM inscription_demande WHERE id_identifiant_session="'.$_GET['id'].'"' ;
138
		$resultat = $GLOBALS['ins_db']->query($requete) ;
139
		if (DB::isError ($resultat)) {
140
			die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
141
		}
142
		if ($resultat->numRows() == 0) {
143
			return INS_MESSAGE_EXPIRATION;
144
		}
145
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
146
		$donnees = unserialize (stripslashes($ligne->id_donnees)) ;
147
		trigger_error(print_r($donnees, true), E_USER_WARNING);
148
		// Ajout des données dans la base
149
		insertion($donnees);
150
 
151
		// On loggue l'utilisateur
152
		$GLOBALS['AUTH']->username = $donnees['email'] ;
153
		$GLOBALS['AUTH']->password = $donnees['mot_de_passe'] ;
154
		$GLOBALS['AUTH']->login() ;
155
 
156
		// Inscription à la lettre d'information
157
		if (INS_UTILISE_LISTE) {
158
			if (isset ($donnees['lettre'])) {
159
				inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
160
			}
161
		}
162
 
163
		// On supprime la demande d'inscription
164
		$requete = 'DELETE FROM inscription_demande WHERE id_identifiant_session="'.$_GET['id'].'"' ;
165
		$resultat = $GLOBALS['ins_db']->query ($requete) ;
166
		if (DB::isError ($resultat)) {
167
			die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
168
		}
169
		// On envoi les mails d'information sur la nouvelle inscription.
170
		envoie_mail() ;
171
	}
172
 
173
	// ... affichage d'une erreur en cas de pb
174
	if (!$GLOBALS['AUTH']->getAuth() &&  $_REQUEST['action'] != 'inscription' && $_REQUEST['action'] != 'inscription_v')	{
175
		if (isset($_POST['username']) && $_POST['username'] != '') {
176
			$res .= message_erreur();
177
		}
178
	}
179
 
180
	// ... la personne est identifiée nous affichons ses informations
181
	if ($GLOBALS['AUTH']->getAuth () && !isset($_POST['modifier']) && $_REQUEST['action'] != 'modifier_v') {
182
			return info().bouton($url);
183
	}
184
 
185
	// ...tentative d'inscription ou Inscription structure
186
	if (preg_match('/^(?:inscription|inscription_v|modifier_v)$/', $_REQUEST['action']) || isset($_POST['modifier'])) {
187
		$action = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
188
		$formulaire = new HTML_formulaireInscription('formulaire_inscription', 'post', $action) ;
189
		// Construction de la liste des pays
190
		$liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
191
 
192
		if (isset($_POST['structure'])) {
193
			$formulaire->formulaireStructure() ;
194
		}
195
 
196
		if (!isset($_POST['modifier'])) {
197
			$GLOBALS['ins_url']->addQueryString('action', 'mdp_oubli');
198
			$url_oubli = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
199
			$GLOBALS['ins_url']->removeQueryString('action');
200
			$res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
201
			$res .= '<h2 class="titre2_inscription">'.INS_LAIUS_INSCRIPTION.'</h2>'."\n" ;
202
			$res .= '<p>'.INS_LAIUS_INSCRIPTION_2.'</p>'."\n" ;
203
			$res .= '<p>'.INS_TEXTE_PERDU.' <a href="'.$url_oubli.'">'.INS_MDP_PERDU_OUBLI.'</a></p>'."\n" ;
204
		} else {
205
			$formulaire->mode_ajout = false;
206
			$res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
207
		}
208
 
209
		$formulaire->construitFormulaire($action, $liste_pays->getListePays('fr')) ;
210
 
211
		if (isset($_POST['modifier'])) {
212
			$formulaire->addElement ('hidden', 'action', 'modifier_v') ;
213
			$formulaire->setDefaults(formulaire_defaults()) ;
214
			if (INS_UTILISE_LISTE) {
215
				if ($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE) == 1) {
216
					$lettre = & $formulaire->getElement('lettre') ;
217
					$lettre->setChecked(true) ;
218
				}
219
			}
220
		} else if ($_REQUEST['action'] == 'inscription') {
221
			$formulaire->addElement ('hidden', 'action', 'inscription_v') ;
222
			$formulaire->setDefaults (array ('pays' => 'fr', 'asso' => 3, 'activite' => 3, 'niveau' => 4, 'lettre' => 1)) ;
223
			if (INS_UTILISE_LISTE) {
224
				$lettre = & $formulaire->getElement('lettre') ;
225
				$lettre->setChecked(true) ;
226
			}
227
		} else if ($_REQUEST['action'] == 'inscription_v') {
228
			if ($formulaire->validate()) {
229
				$formulaire->process('demande_inscription', false) ;
230
				return message_inscription() ;
231
			}
232
		} else if ($_REQUEST['action'] == 'modifier_v') {
233
			if ($formulaire->validate()) {
234
				if (INS_UTILISE_LISTE) {
235
					$valeur_lettre = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE) ;
236
				}
237
				$formulaire->process('mise_a_jour', false) ;
238
			}
239
			if (INS_UTILISE_LISTE) {
240
				if (isset($_POST['lettre'])) {
241
					if ($valeur_lettre == '') {
242
						inscription_lettre (INS_MAIL_INSCRIPTION_LISTE) ;
243
					}
244
				} else {
245
					if ($valeur_lettre == 1) {
246
						inscription_lettre (INS_MAIL_DESINSCRIPTION_LISTE) ;
247
					}
248
				}
249
			}
250
			return info($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)).bouton($url);
251
		}
252
 
253
		return $res.$formulaire->toHTML() ;
254
	}
255
 
256
	return $res ;
257
}
258
?>