Subversion Repositories Sites.tela-botanica.org

Rev

Rev 508 | 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
 
504 alex 83
	// Operation de maintenance sur la table inscription_demande
84
	// On supprime les vieilles demandes qui ont expire
85
 
86
	$requete_maintenance = 'delete from inscription_demande where id_date < DATE_SUB(NOW(), interval 1 week)';
87
	$resultat_maintenance = $GLOBALS['ins_db']->query ($requete_maintenance);
88
	if (DB::isError($resultat_maintenance)) {
89
		return ('Echec de la requete : '.$requete_maintenance.'<br />'.$resultat_maintenance->getMessage());
90
	}
91
 
482 jpm 92
	$url = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
409 jpm 93
	// Attibution  de l'action par défaut à effectuer.
94
	if (!isset ($_REQUEST['action'])) {
95
		$_REQUEST['action'] = 'inscription';
96
	}
97
	$res = '' ;
98
	$est_loggue = true ;
99
 
100
	// ... tentative de déconnection
101
	if (isset ($_GET['logout']) && $_GET['logout'] == 1) {
102
		$GLOBALS['AUTH']->logout() ;
103
		$_POST['username'] = '' ;
104
		$_POST['password'] = '' ;
105
		//return AUTH_formulaire_login() ;
106
	}
107
 
108
	// ...supprimer l'inscription
109
	if (isset ($_POST['supprimer'])) {
110
		$mail_utilisateur = $GLOBALS['AUTH']->getUsername();
111
		$id_utilisateur = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
112
		$bool_inscription_lettre = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE);
113
		$resultat = $GLOBALS['AUTH']->removeUser($mail_utilisateur) ;
4 david 114
 
409 jpm 115
		if (PEAR::isError($resultat)) {
504 alex 116
			return ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
409 jpm 117
		}
400 alex 118
 
409 jpm 119
		// Suppression dans SPIP
120
		if (INS_UTILISE_SPIP) {
121
			desinscription_spip($id_utilisateur) ;
122
		}
4 david 123
 
409 jpm 124
		// Désinscription de la lettre d'info
549 jpm 125
		if (INS_UTILISE_LISTE) {
409 jpm 126
			if ($bool_inscription_lettre == 1) {
549 jpm 127
				$supp_abo = file_get_contents(URL_LISTE_ACTU.'suppression_abonne.php?domaine=tela-botanica.org&liste=actu&mail='.$mail_utilisateur) ;
409 jpm 128
			}
549 jpm 129
		}
504 alex 130
		// Appel des actions desinscriptions des applications clientes
131
		$msg = '';
132
        $d = dir(GEN_CHEMIN_CLIENT);
133
		while (false !== ($repertoire = $d->read())) {
134
			if ($repertoire != '.' || $repertoire != '..') {
135
				if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php'))
136
				include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php' ;
137
			}
138
			if ($msg != '') $res .= $msg;
139
		}
140
		$d->close();
141
 
142
		// Deconnexion
409 jpm 143
		$GLOBALS['AUTH']->logout() ;
144
 
145
		// Ajout d'une ligne dans les statistiques
146
		if (INS_UTILISE_STAT) {
147
			$requete = 'INSERT INTO '.INS_TABLE_STATISTIQUE.' SET '.INS_STATS_CHAMPS_DATE.'=NOW(), '.INS_STATS_CHAMPS_ACTION.'="del"' ;
148
			$resultat = $GLOBALS['ins_db']->query ($requete) ;
149
			if (DB::isError ($resultat)) {
150
				die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
151
			}
152
		}
153
		//return AUTH_formulaire_login() ;
154
	}
4 david 155
 
409 jpm 156
	// ... envoie de mot de passe
157
	if ($_REQUEST['action'] == 'sendpasswd') {
158
		envoie_passe();
159
	}
160
 
161
	// ...oublie de mot de passe
162
	if (preg_match('/^(?:mdp_oubli|sendpasswd)$/', $_REQUEST['action'])) {
163
		return message_erreur(false);
164
	}
165
 
482 jpm 166
	// ...inscription dans la base si l'utilisateur clique sur le lien du courriel de confirmation envoyé par l'appli
167
	if (isset($_GET['action']) && $_GET['action'] == 'ajouter' && isset($_GET['id']) && !$GLOBALS['AUTH']->getAuth()) {
168
		$requete = 	'SELECT id_donnees '.
169
					'FROM inscription_demande '.
170
					'WHERE id_identifiant_session = "'.$_GET['id'].'" ';
171
		$resultat = $GLOBALS['ins_db']->query($requete);
409 jpm 172
		if (DB::isError ($resultat)) {
504 alex 173
			return ("Echec de la requete : $requete<br />".$resultat->getMessage());
409 jpm 174
		}
175
		if ($resultat->numRows() == 0) {
176
			return INS_MESSAGE_EXPIRATION;
177
		}
482 jpm 178
		$ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT);
179
		$donnees = unserialize(stripslashes($ligne->id_donnees));
409 jpm 180
		//trigger_error(print_r($donnees, true), E_USER_WARNING);
4 david 181
 
409 jpm 182
		// Ajout des données dans la base
183
		insertion($donnees);
184
 
185
		// On loggue l'utilisateur
482 jpm 186
		$GLOBALS['AUTH']->username = $donnees['email'];
187
		$GLOBALS['AUTH']->password = $donnees['mot_de_passe'];
188
		$GLOBALS['AUTH']->login();
409 jpm 189
 
190
		// Inscription à la lettre d'information
507 jpm 191
		/*if (INS_UTILISE_LISTE) {
482 jpm 192
			if (isset($donnees['lettre']) && 1 == $donnees['lettre']) {
409 jpm 193
				inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
194
			}
507 jpm 195
		}*/
409 jpm 196
 
197
		// On supprime la demande d'inscription
198
		$requete = 'DELETE FROM inscription_demande WHERE id_identifiant_session="'.$_GET['id'].'"' ;
199
		$resultat = $GLOBALS['ins_db']->query ($requete) ;
200
		if (DB::isError ($resultat)) {
201
			die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
202
		}
203
 
204
		// On envoi les mails d'information sur la nouvelle inscription.
205
		envoie_mail();
206
	}
4 david 207
 
409 jpm 208
	// ... affichage d'une erreur en cas de pb
209
	if (!$GLOBALS['AUTH']->getAuth() &&  $_REQUEST['action'] != 'inscription' && $_REQUEST['action'] != 'inscription_v')	{
210
		if (isset($_POST['username']) && $_POST['username'] != '') {
211
			$res .= message_erreur();
212
		}
213
	}
4 david 214
 
409 jpm 215
	// ... la personne est identifiée nous affichons ses informations
216
	if ($GLOBALS['AUTH']->getAuth () && !isset($_POST['modifier']) && $_REQUEST['action'] != 'modifier_v') {
217
			return info().bouton($url);
218
	}
219
 
220
	// ...tentative d'inscription ou Inscription structure
221
	if (preg_match('/^(?:inscription|inscription_v|modifier_v)$/', $_REQUEST['action']) || isset($_POST['modifier'])) {
222
		$action = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
223
		$formulaire = new HTML_formulaireInscription('formulaire_inscription', 'post', $action) ;
224
		// Construction de la liste des pays
225
		$liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
4 david 226
 
409 jpm 227
		if (isset($_POST['structure'])) {
228
			$formulaire->formulaireStructure() ;
229
		}
230
 
231
		if (!isset($_POST['modifier'])) {
232
			$GLOBALS['ins_url']->addQueryString('action', 'mdp_oubli');
233
			$url_oubli = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
234
			$GLOBALS['ins_url']->removeQueryString('action');
235
			$res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
236
			$res .= '<h2 class="titre2_inscription">'.INS_LAIUS_INSCRIPTION.'</h2>'."\n" ;
237
			$res .= '<p>'.INS_LAIUS_INSCRIPTION_2.'</p>'."\n" ;
238
			$res .= '<p>'.INS_TEXTE_PERDU.' <a href="'.$url_oubli.'">'.INS_MDP_PERDU_OUBLI.'</a></p>'."\n" ;
239
		} else {
240
			$formulaire->mode_ajout = false;
241
			$res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
242
		}
243
 
244
		$formulaire->construitFormulaire($action, $liste_pays->getListePays('fr')) ;
245
 
246
		if (isset($_POST['modifier'])) {
247
			$formulaire->addElement ('hidden', 'action', 'modifier_v') ;
248
			$formulaire->setDefaults(formulaire_defaults()) ;
249
			if (INS_UTILISE_LISTE) {
250
				if ($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE) == 1) {
251
					$lettre = & $formulaire->getElement('lettre') ;
252
					$lettre->setChecked(true) ;
253
				}
254
			}
255
		} else if ($_REQUEST['action'] == 'inscription') {
256
			$formulaire->addElement ('hidden', 'action', 'inscription_v') ;
257
			$formulaire->setDefaults (array ('pays' => 'fr', 'asso' => 3, 'activite' => 3, 'niveau' => 4, 'lettre' => 1)) ;
258
			if (INS_UTILISE_LISTE) {
259
				$lettre = & $formulaire->getElement('lettre') ;
260
				$lettre->setChecked(true) ;
261
			}
262
		} else if ($_REQUEST['action'] == 'inscription_v') {
263
			if ($formulaire->validate()) {
264
				$formulaire->process('demande_inscription', false) ;
265
				return message_inscription() ;
266
			}
267
		} else if ($_REQUEST['action'] == 'modifier_v') {
507 jpm 268
 
508 jpm 269
			$ancien_mail = $GLOBALS['AUTH']->getUsername() ;
270
 
409 jpm 271
			if ($formulaire->validate()) {
272
				$formulaire->process('mise_a_jour', false) ;
273
			}
507 jpm 274
 
508 jpm 275
			$nouveau_mail = $GLOBALS['AUTH']->getUsername() ;
276
 
277
			// on parcourt tout le dossier des applications clientes et on appelle la modification de chacune
278
			$d = dir(GEN_CHEMIN_CLIENT);
279
			while (false !== ($repertoire = $d->read())) {
280
				if ($repertoire != '.' || $repertoire != '..') {
281
					if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.modification.inc.php'))
282
					include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.modification.inc.php' ;
283
				}
284
			}
285
			$d->close();
286
 
409 jpm 287
			return info($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)).bouton($url);
288
		}
289
 
290
		return $res.$formulaire->toHTML() ;
291
	}
292
 
293
	return $res ;
4 david 294
}
409 jpm 295
 
296
function afficherContenuPied () {
297
    $sortie  = 	'<p id="ins_pied_page">'.INS_PIED_INFO.
298
					'<a href="mailto:'.INS_PIED_MAIL.'">'.INS_PIED_MAIL.'</a>.'.
299
				'</p>';
300
    return $sortie;
301
}
302
?>