Subversion Repositories Sites.tela-botanica.org

Rev

Rev 409 | 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
 
482 jpm 83
	$url = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
409 jpm 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
 
482 jpm 144
	// ...inscription dans la base si l'utilisateur clique sur le lien du courriel de confirmation envoyé par l'appli
145
	if (isset($_GET['action']) && $_GET['action'] == 'ajouter' && isset($_GET['id']) && !$GLOBALS['AUTH']->getAuth()) {
146
		$requete = 	'SELECT id_donnees '.
147
					'FROM inscription_demande '.
148
					'WHERE id_identifiant_session = "'.$_GET['id'].'" ';
149
		$resultat = $GLOBALS['ins_db']->query($requete);
409 jpm 150
		if (DB::isError ($resultat)) {
482 jpm 151
			die ("Echec de la requete : $requete<br />".$resultat->getMessage());
409 jpm 152
		}
153
		if ($resultat->numRows() == 0) {
154
			return INS_MESSAGE_EXPIRATION;
155
		}
482 jpm 156
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
157
		$donnees = unserialize(stripslashes($ligne->id_donnees));
409 jpm 158
		//trigger_error(print_r($donnees, true), E_USER_WARNING);
4 david 159
 
409 jpm 160
		// Ajout des données dans la base
161
		insertion($donnees);
162
 
163
		// On loggue l'utilisateur
482 jpm 164
		$GLOBALS['AUTH']->username = $donnees['email'];
165
		$GLOBALS['AUTH']->password = $donnees['mot_de_passe'];
166
		$GLOBALS['AUTH']->login();
409 jpm 167
 
168
		// Inscription à la lettre d'information
169
		if (INS_UTILISE_LISTE) {
482 jpm 170
			if (isset($donnees['lettre']) && 1 == $donnees['lettre']) {
409 jpm 171
				inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
172
			}
173
		}
174
 
175
		// On supprime la demande d'inscription
176
		$requete = 'DELETE FROM inscription_demande WHERE id_identifiant_session="'.$_GET['id'].'"' ;
177
		$resultat = $GLOBALS['ins_db']->query ($requete) ;
178
		if (DB::isError ($resultat)) {
179
			die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
180
		}
181
 
182
		// On envoi les mails d'information sur la nouvelle inscription.
183
		envoie_mail();
184
	}
4 david 185
 
409 jpm 186
	// ... affichage d'une erreur en cas de pb
187
	if (!$GLOBALS['AUTH']->getAuth() &&  $_REQUEST['action'] != 'inscription' && $_REQUEST['action'] != 'inscription_v')	{
188
		if (isset($_POST['username']) && $_POST['username'] != '') {
189
			$res .= message_erreur();
190
		}
191
	}
4 david 192
 
409 jpm 193
	// ... la personne est identifiée nous affichons ses informations
194
	if ($GLOBALS['AUTH']->getAuth () && !isset($_POST['modifier']) && $_REQUEST['action'] != 'modifier_v') {
195
			return info().bouton($url);
196
	}
197
 
198
	// ...tentative d'inscription ou Inscription structure
199
	if (preg_match('/^(?:inscription|inscription_v|modifier_v)$/', $_REQUEST['action']) || isset($_POST['modifier'])) {
200
		$action = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
201
		$formulaire = new HTML_formulaireInscription('formulaire_inscription', 'post', $action) ;
202
		// Construction de la liste des pays
203
		$liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
4 david 204
 
409 jpm 205
		if (isset($_POST['structure'])) {
206
			$formulaire->formulaireStructure() ;
207
		}
208
 
209
		if (!isset($_POST['modifier'])) {
210
			$GLOBALS['ins_url']->addQueryString('action', 'mdp_oubli');
211
			$url_oubli = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
212
			$GLOBALS['ins_url']->removeQueryString('action');
213
			$res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
214
			$res .= '<h2 class="titre2_inscription">'.INS_LAIUS_INSCRIPTION.'</h2>'."\n" ;
215
			$res .= '<p>'.INS_LAIUS_INSCRIPTION_2.'</p>'."\n" ;
216
			$res .= '<p>'.INS_TEXTE_PERDU.' <a href="'.$url_oubli.'">'.INS_MDP_PERDU_OUBLI.'</a></p>'."\n" ;
217
		} else {
218
			$formulaire->mode_ajout = false;
219
			$res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
220
		}
221
 
222
		$formulaire->construitFormulaire($action, $liste_pays->getListePays('fr')) ;
223
 
224
		if (isset($_POST['modifier'])) {
225
			$formulaire->addElement ('hidden', 'action', 'modifier_v') ;
226
			$formulaire->setDefaults(formulaire_defaults()) ;
227
			if (INS_UTILISE_LISTE) {
228
				if ($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE) == 1) {
229
					$lettre = & $formulaire->getElement('lettre') ;
230
					$lettre->setChecked(true) ;
231
				}
232
			}
233
		} else if ($_REQUEST['action'] == 'inscription') {
234
			$formulaire->addElement ('hidden', 'action', 'inscription_v') ;
235
			$formulaire->setDefaults (array ('pays' => 'fr', 'asso' => 3, 'activite' => 3, 'niveau' => 4, 'lettre' => 1)) ;
236
			if (INS_UTILISE_LISTE) {
237
				$lettre = & $formulaire->getElement('lettre') ;
238
				$lettre->setChecked(true) ;
239
			}
240
		} else if ($_REQUEST['action'] == 'inscription_v') {
241
			if ($formulaire->validate()) {
242
				$formulaire->process('demande_inscription', false) ;
243
				return message_inscription() ;
244
			}
245
		} else if ($_REQUEST['action'] == 'modifier_v') {
246
			if ($formulaire->validate()) {
247
				$formulaire->process('mise_a_jour', false) ;
248
			}
249
			if (INS_UTILISE_LISTE) {
482 jpm 250
				//trigger_error(print_r($_POST, true), E_USER_NOTICE);
251
				if (isset($_POST['lettre']) && 1 == $_POST['lettre']) {
252
					inscription_lettre(INS_MAIL_INSCRIPTION_LISTE);
409 jpm 253
				} else {
482 jpm 254
					inscription_lettre(INS_MAIL_DESINSCRIPTION_LISTE);
409 jpm 255
				}
256
			}
257
			return info($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)).bouton($url);
258
		}
259
 
260
		return $res.$formulaire->toHTML() ;
261
	}
262
 
263
	return $res ;
4 david 264
}
409 jpm 265
 
266
function afficherContenuPied () {
267
    $sortie  = 	'<p id="ins_pied_page">'.INS_PIED_INFO.
268
					'<a href="mailto:'.INS_PIED_MAIL.'">'.INS_PIED_MAIL.'</a>.'.
269
				'</p>';
270
    return $sortie;
271
}
272
?>