Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
1163 alexandre_ 1
<?php
2
 
3
//vim: set expandtab tabstop=4 shiftwidth=4:
4
// +-----------------------------------------------------------------------------------------------+
5
// | PHP version 4.0                                                                               |
6
// +-----------------------------------------------------------------------------------------------+
7
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group                                      |
8
// +-----------------------------------------------------------------------------------------------+
9
// | This source file is subject to version 2.0 of the PHP license,                                |
10
// | that is bundled with this package in the file LICENSE, and is                                 |
11
// | available at through the world-wide-web at                                                    |
12
// | http://www.php.net/license/2_02.txt.                                                          |
13
// | If you did not receive a copy of the PHP license and are unable to                            |
14
// | obtain it through the world-wide-web, please send a note to                                   |
15
// | license@php.net so we can mail you a copy immediately.                                        |
16
// +-----------------------------------------------------------------------------------------------+
17
/**
18
*
19
*Fichier des fonctions du bottin
20
*
21
*@package bottin
22
//Auteur original :
23
*@author                Alexandre GRANIER <alexandre@tela-botanica.org.org>
24
//Autres auteurs :
25
*@copyright         Outils-reseaux 2006-2040
26
*@version           05 avril 2006
27
// +-----------------------------------------------------------------------------------------------+
28
//
1552 alexandre_ 29
// $Id: bottin.class.php,v 1.6 2007-08-27 13:12:15 alexandre_tb Exp $
1163 alexandre_ 30
// FICHIER : $RCSfile: bottin.class.php,v $
31
// AUTEUR    : $Author: alexandre_tb $
1552 alexandre_ 32
// VERSION : $Revision: 1.6 $
33
// DATE        : $Date: 2007-08-27 13:12:15 $
1163 alexandre_ 34
*/
35
 
36
 
37
// +------------------------------------------------------------------------------------------------------+
38
// |                                            ENTETE du PROGRAMME                                       |
39
// +------------------------------------------------------------------------------------------------------+
40
 
41
require_once PAP_CHEMIN_API_PEAR.'PEAR.php';
42
 
1467 alexandre_ 43
// +------------------------------------------------------------------------------------------------------+
44
// |                                            CONSTANTE DES TEMPLATES                                   |
45
// +------------------------------------------------------------------------------------------------------+
1163 alexandre_ 46
 
1467 alexandre_ 47
// Page d'accueil
48
define ('INS_TEMPLATE_PAGE_ACCUEIL', 1);
1163 alexandre_ 49
 
1467 alexandre_ 50
//Template du formulaire
51
define ('INS_TEMPLATE_FORMULAIRE', 3);
1421 alexandre_ 52
 
1467 alexandre_ 53
// Template mail confirmation inscription
54
define ('INS_TEMPLATE_MAIL_CONFIRMATION_SUJET', 4);
55
define ('INS_TEMPLATE_MAIL_CONFIRMATION_CORPS', 2);
56
 
57
// Template d envoie de mot de passe perdu
58
define ('INS_TEMPLATE_MAIL_PASSE_SUJET', 5);
59
define ('INS_TEMPLATE_MAIL_PASSE_CORPS', 6);
60
 
61
// Template du mail apres moderation accepte
62
define ('INS_TEMPLATE_MAIL_APRES_MODERATION_SUJET', 7);
63
define ('INS_TEMPLATE_MAIL_APRES_MODERATION_CORPS', 8);
64
 
65
// Modele du titre du formulaire (ce qui precede le formulaire)
66
define ('INS_TEMPLATE_TITRE_FORMULAIRE', 9);
67
 
68
// Message apres demande d inscription moderee
69
define ('INS_TEMPLATE_MESSAGE_INSCRIPTION_MODEREE', 10);
70
 
1552 alexandre_ 71
// Modele de la page de la cartogrphie google
72
define ('INS_TEMPLATE_CARTO_GOOGLE_ACCUEIL', 11);
73
 
74
 
1421 alexandre_ 75
class inscription extends PEAR {
76
 
77
	/**
78
     * Constructeur
79
     *
80
     *
81
     * @return void
82
     * @access public
83
     */
84
	function inscription() {
85
 
86
	}
87
 
88
	/**
89
	 * Renvoie le code HTML d une liste avec les lettres
90
	 *
91
	 * @global  Un pointeur vers une connexion de base de donnee $GLOBALS['ins_url']
92
	 * @return array ['ic_param'] les parametres tels que dans la table inscription_config
93
	 * @access public
94
	 */
1431 alexandre_ 95
	function getConfig($id_inscription = '') {
1421 alexandre_ 96
		// Recuperation de la configuration
97
	    $requete = 'select * from inscription_configuration';
1431 alexandre_ 98
	    if ($id_inscription != '') $requete .= ' where ic_id_inscription="'.$id_inscription.'"';
1421 alexandre_ 99
	    $resultat = $GLOBALS['ins_db']->query($requete);
100
	    if (DB::isError($resultat)) return "Echec de la requete : $requete<br />".$resultat->getMessage() ;
101
		    if ($resultat->numRows() != 0) {
102
		    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
103
		    return $ligne;
104
	    } else {
1483 alexandre_ 105
	    	return PEAR::raiseError('La table inscription_configuration est vide...');
1421 alexandre_ 106
	    }
107
	}
108
 
109
	/**
110
	 * Renvoi un tableau avec les informations de inscription_attente
111
	 *
112
	 * @global  Un pointeur vers une connexion de base de donnee $GLOBALS['ins_db']
113
	 * @return array Un tableau ['id'], ['nom'], ['prenom'] ... ou la chaine vide si il n'y a personne en attente
114
	 * @access public
115
	 */
116
	function getInscritEnAttenteModeration() {
117
		$requete = 'select * from inscription_attente';
118
		$resultat = $GLOBALS['ins_db']->query($requete);
119
 
120
		$tableau_inscrit = array();
121
		if (DB::isError($resultat)) return "Echec de la requete : $requete<br />".$resultat->getMessage() ;
122
		    if ($resultat->numRows() != 0) {
123
			    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
124
				    $donnees = unserialize (stripslashes($ligne->ia_donnees)) ;
125
				    array_push ($tableau_inscrit, array_merge (array('id' => $ligne->ia_id_inscription, 'date' => $ligne->ia_date), $donnees));
126
			    }
127
			    return $tableau_inscrit;
128
		    } else {
129
	    		return '';
130
	    	}
131
	}
132
 
1431 alexandre_ 133
	/** Renvoi le tableau HTML des inscrits en attente
1421 alexandre_ 134
	 *
135
	 * @global	$GLOBALS['ins_url'] un objet Net_URL avec l url courante
136
	 * @param array Un tableau de tableau d inscrit avec ['id'],['nom'],['prenom'],['email'],['ville'],['date']
137
	 * @return string Un tableau HTML
138
	 */
139
 
140
	 function getTableauEnAttente($tableau) {
141
	 	$html = '';
142
 
1431 alexandre_ 143
	 	if (empty ($tableau)) {
144
	 		return INS_PAS_D_INSCRIT_EN_ATTENTE;
145
	 	}
1421 alexandre_ 146
	 	$table = new HTML_Table();
147
	 	$table->addRow(array (INS_NOM, INS_EMAIL, INS_VILLE, INS_DATE_INS, INS_ACTION), '', 'TH');
1431 alexandre_ 148
 
1421 alexandre_ 149
	 	$action = '<a href="'.$GLOBALS['ins_url']->getURL().'">'.'</a>';
150
	 	foreach ($tableau as $demandeur) {
1431 alexandre_ 151
	 		// L identifiant du demandeur dans l url
152
	 		$GLOBALS['ins_url']->addQueryString (INS_VARIABLE_ID_DEMANDEUR, $demandeur['id']) ;
153
	 		$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_VALIDER_INSCRIPTION);
154
	 		$valide = '<a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_VALIDER.'</a> / ';
155
	 		$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_SUPPRIMER_DEMANDE_INSCRIPTION);
156
	 		$valide .= '<a href="'.$GLOBALS['ins_url']->getURL().
157
					'" onclick="javascript:return confirm(\''.INS_SUPPRIMER.' ?\')">'.INS_SUPPRIMER.'</a>';
1467 alexandre_ 158
	 		$table->addRow(array($demandeur['a_nom'].' '.(isset($demandeur['a_prenom']) ? $demandeur['a_prenom']: ''), $demandeur['a_mail'],
159
	 							$demandeur['a_ville'], $demandeur['date'], $valide));
1421 alexandre_ 160
	 	}
161
	 	return $table->toHTML();
162
	 }
163
 
164
	/**
165
	 * Renvoie un tableau avec les moderateurs de l inscription
166
	 * ceux du champs ic_mail_moderateur
167
	 *
168
	 * @return array Un tableau de mail de moderateur
169
	 */
170
	function getModerateurs() {
171
 
172
	}
173
	/**
174
	 * Insere une demande d inscription dans la table inscription_attente et
175
	 * envoi un mail aux moderateurs
176
	 *
177
	 * @param	string	Un identifiant de session, soit genere aleatoirement soit venu de la tablea inscription_demande
178
	 * @global array la globale $GLOBALS['ins_config']
179
	 * @global mixed un pointeur vers une base de donnees $GLOBALS['ins_db']
180
	 * @return string Un message a renvoye a l utilisateur indiquant que sa demande a ete prise en compte
181
	 */
182
	function demandeInscriptionModere($valeurs) {
183
	// On stocke les informations dans un variable de session
184
	    // On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères
1431 alexandre_ 185
	    // afin d'eviter d'obtenir une url trop longue
1421 alexandre_ 186
	    $chaine = substr (session_id(), 0, 8) ;
187
	    $requete_verif = 'select * from inscription_attente where ia_id_inscription="'.$chaine.'"' ;
188
	    $resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ;
189
	    if ($resultat_verif->numRows() != 0) {
190
	        $requete_suppression = 'delete from inscription_attente where ia_id_inscription="'.$chaine.'"' ;
191
	        $GLOBALS['ins_db']->query ($requete_suppression) ;
192
	    }
193
	    $requete = 'insert into inscription_attente set ia_id_inscription="'.$chaine.'", ia_donnees="'.
194
	                addslashes(serialize($valeurs)).'", ia_date=NOW()' ;
195
	    $resultat = $GLOBALS['ins_db']->query ($requete) ;
196
	    if (DB::isError ($resultat)) {
197
	        echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
198
	    }
199
	    // On envoie un email aux moderateurs
200
 
201
	    require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php';
202
	    $tpl = new HTML_Template_IT() ;
203
	    // Le gabarit du mail est dans un template
204
	    // template 3
205
	    $url = $GLOBALS['ins_url']->getURL();
206
	    $requete = 'select it_template from inscription_template where it_id_template=3'.
207
	    			' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ;
208
 
209
	    if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) {
210
	    	echo 'erreur' ;
211
	    }
212
		$tpl->setVariable('URL_INSCRIPTION', $url) ;
213
		$mails_moderateur = split ('/\n/', $GLOBALS['ins_config']['ic_mail_moderateur']);
214
		foreach ($mails_moderateur as $mail) {
1467 alexandre_ 215
			mail ($mail, INS_MODERATION_SUJET,
216
				html_entity_decode(INS_NOUVELLE_INSCRIPTION_A_MODERE),
217
					'From: '.$GLOBALS['ins_config']['ic_from_mail_confirmation']) ;
1421 alexandre_ 218
		}
1467 alexandre_ 219
	    return true ;
1421 alexandre_ 220
	}
1431 alexandre_ 221
	/**
222
	 * 	Valide une demande d inscription
223
	 * 	Transfere les donnees de la table inscription_attente vers annuaire
224
	 *
225
	 * 	Envoie un email d avertissement a l inscrit
226
	 *
227
	 * @global array la globale ins_config
228
	 */
229
	function validerInscription() {
230
		$requete = 'SELECT ia_donnees FROM inscription_attente WHERE ia_id_inscription="'.$_GET[INS_VARIABLE_ID_DEMANDEUR].'"' ;
231
	    $resultat = $GLOBALS['ins_db']->query($requete) ;
232
	    if (DB::isError ($resultat)) {
233
		    return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
234
	    }
235
	    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
236
	    $donnees = unserialize (stripslashes($ligne->ia_donnees)) ;
237
 
238
	    // dans les donnees serialisees, on recupere l identifiant de l inscription
239
	    // pour charger la globale ins_config
240
	    $GLOBALS['ins_config'] = inscription::getConfig($donnees['id_inscription']);
1467 alexandre_ 241
	    // Template du formulaire
242
   		$GLOBALS['ins_config']['ic_inscription_template'] = inscription::getTemplate(INS_TEMPLATE_FORMULAIRE,
243
    									$GLOBALS['ins_config']['ic_id_inscription']);
244
 
1431 alexandre_ 245
 
246
	    $id_utilisateur = inscription_insertion($donnees) ;
247
 
248
	    // Envoie du mail
1467 alexandre_ 249
	    $destinataire = $donnees['a_mail'];
250
	    $sujet = inscription::getTemplate(INS_TEMPLATE_MAIL_APRES_MODERATION_SUJET, $GLOBALS['ins_config']['ic_id_inscription']);
251
	    $corps = inscription::getTemplate(INS_TEMPLATE_MAIL_APRES_MODERATION_CORPS, $GLOBALS['ins_config']['ic_id_inscription']);
252
	    // Appel des actions desinscriptions des applications clientes
253
        $d = dir(GEN_CHEMIN_CLIENT);
254
		while (false !== ($repertoire = $d->read())) {
255
			if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php'))
256
			include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php' ;
257
		}
258
		$d->close();
259
		if (INS_CHAMPS_LETTRE != '' && isset ($donnees['a_lettre'])) {
260
			inscription_lettre($GLOBALS['ins_config']['ic_mail_inscription_news']) ;
261
		}
262
	    if (!mail ($destinataire, $sujet, $corps, 'From: '.$GLOBALS['ins_config']['ic_from_mail_confirmation'])) return 'erreur dans l\'envoi du mail';
1431 alexandre_ 263
 
264
	    inscription::supprimerDemandeInscription();
265
	}
266
	/**
267
	 * 	Supprime une demande d inscription dans la table inscription_attente
268
	 *
269
	 * @global	string	l indentifiant de la demande
270
	 * @global mixed la globale ins_db
271
	 */
272
	function supprimerDemandeInscription() {
273
		// Suppression de la ligne dans inscription_attente
274
	    $req_sup = 'delete from inscription_attente where ia_id_inscription="'.$_GET[INS_VARIABLE_ID_DEMANDEUR].'"';
275
	    $res_sup = $GLOBALS['ins_db']->query ($req_sup);
276
	    if (DB::isError ($res_sup)) {
277
		    return ("Echec de la requete : $req_sup<br />".$res_sup->getMessage()) ;
278
	    }
279
	}
280
 
281
	/**
282
	 * 	Supprimer un inscrit de l annuaire et appelle les fichiers
283
	 * 	client appli.desinscription.inc.php
284
	 *
285
	 * @static
286
	 * @global int l identifiant de l inscrit
287
	 * @global mixed la globale ins_db
288
	 */
289
 
290
	function supprimerInscription() {
291
 
292
	    $queryLogin = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_GET[INS_VARIABLE_ID_INSCRIT] ;
293
	    $resultLogin = $GLOBALS['ins_db']->query($queryLogin) ;
294
	    $rowLogin = $resultLogin->fetchRow(DB_FETCHMODE_ASSOC) ;
295
	    $mail = $rowLogin[INS_CHAMPS_MAIL];
296
 
297
	    // suppression
298
	    $query = 'delete from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_GET[INS_VARIABLE_ID_INSCRIT] ;
299
	    $resultat = $GLOBALS['ins_db']->query($query);
300
	    if (DB::isError ($resultat)) {
301
		    return ("Echec de la requete : $req_sup<br />".$res_sup->getMessage()) ;
302
	    }
303
	     // Appel des actions desinscriptions des applications clientes
304
	    $d = dir(GEN_CHEMIN_CLIENT);
305
		$id_utilisateur = $_GET[INS_VARIABLE_ID_INSCRIT];
306
		while (false !== ($repertoire = $d->read())) {
307
			if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php'))
308
			include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php' ;
309
		}
310
		$d->close();
311
	}
1467 alexandre_ 312
 
313
	function getTemplate($id_template, $id_inscription, $langue = INS_LANGUE_DEFAUT) {
314
 
315
	    $requete = 'select it_template from inscription_template where it_id_template="'.$id_template.'"'.
316
	    			' and it_i18n like "'.$langue.'%" and it_ce_inscription="'.$id_inscription.'"' ;
317
	    $resultat = $GLOBALS['ins_db']->query($requete);
318
	    if (DB::isError ($resultat)) {
319
		    $this->raiseError();
320
		}
321
		$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT);
322
		return $ligne->it_template;
323
	}
1421 alexandre_ 324
}
1467 alexandre_ 325
 
326
 
327
class lettresAlphabet extends PEAR {
328
 
329
	var $url;
330
 
331
	var $variable_lettre ;
332
 
333
	/**
334
     * Constructeur
335
     *
336
     * @param Net_URL un objet Net_URL
337
     * @param string $variable_lettre le nom de la variable $_GET qui sera place dans l URL
338
     * @return void
339
     * @access public
340
     */
341
	function lettresAlphabet($url, $variable_lettre = 'lettre') {
342
		$this->url = $url ;
343
		$this->variable_lettre = $variable_lettre ;
344
	}
345
 
346
	/**
347
	 * Renvoie le code HTML d une liste avec les lettres
348
	 *
349
	 * @return string HTML
350
	 * @access public
351
	 */
352
	function toHMTL() {
353
 
354
		$res = '<ul class="liste_lettre">'."\n" ;
355
		for ($i = 65 ; $i <91 ; $i++) {
356
			$this->url->addQueryString($this->variable_lettre, chr($i)) ;
357
			$res .= "\t".'<li class="liste_lettre"><a class="lien_alphabet" '.
358
					'href="'.
359
					$this->url->getURL().'">';
360
			$res .= chr($i) ;
361
			$res .= '</a></li>'."\n";
362
		}
363
		$res .= '</ul>';
364
		return $res ;
365
	}
366
}
367
 
1163 alexandre_ 368
//-- Fin du code source    ------------------------------------------------------------
369
/*
370
* $Log: not supported by cvs2svn $
1552 alexandre_ 371
* Revision 1.5  2007-06-25 15:02:50  alexandre_tb
372
* correction bug
373
*
1483 alexandre_ 374
* Revision 1.4  2007-06-25 09:59:03  alexandre_tb
375
* ajout de carte_google, mise en place des templates avec api/formulaire, configuration de multiples inscriptions, ajout de modele pour les mails
376
*
1467 alexandre_ 377
* Revision 1.3  2007-06-01 13:47:47  alexandre_tb
378
* nouvelles methodes
379
*
1431 alexandre_ 380
* Revision 1.2  2007-05-25 14:31:24  alexandre_tb
381
* en cours
382
*
1421 alexandre_ 383
* Revision 1.1  2006/12/13 13:26:52  alexandre_tb
384
* version initiale
385
*
1163 alexandre_ 386
*/
387
?>