Subversion Repositories Sites.gentiana.org

Rev

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