Subversion Repositories Sites.tela-botanica.org

Rev

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

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