Subversion Repositories Applications.papyrus

Rev

Rev 1431 | 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
//
1467 alexandre_ 29
// $Id: bottin.class.php,v 1.4 2007-06-25 09:59:03 alexandre_tb Exp $
1163 alexandre_ 30
// FICHIER : $RCSfile: bottin.class.php,v $
31
// AUTEUR    : $Author: alexandre_tb $
1467 alexandre_ 32
// VERSION : $Revision: 1.4 $
33
// DATE        : $Date: 2007-06-25 09:59:03 $
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
 
1421 alexandre_ 71
class inscription extends PEAR {
72
 
73
	/**
74
     * Constructeur
75
     *
76
     *
77
     * @return void
78
     * @access public
79
     */
80
	function inscription() {
81
 
82
	}
83
 
84
	/**
85
	 * Renvoie le code HTML d une liste avec les lettres
86
	 *
87
	 * @global  Un pointeur vers une connexion de base de donnee $GLOBALS['ins_url']
88
	 * @return array ['ic_param'] les parametres tels que dans la table inscription_config
89
	 * @access public
90
	 */
1431 alexandre_ 91
	function getConfig($id_inscription = '') {
1421 alexandre_ 92
		// Recuperation de la configuration
93
	    $requete = 'select * from inscription_configuration';
1431 alexandre_ 94
	    if ($id_inscription != '') $requete .= ' where ic_id_inscription="'.$id_inscription.'"';
1421 alexandre_ 95
	    $resultat = $GLOBALS['ins_db']->query($requete);
96
	    if (DB::isError($resultat)) return "Echec de la requete : $requete<br />".$resultat->getMessage() ;
97
		    if ($resultat->numRows() != 0) {
98
		    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
99
		    return $ligne;
100
	    } else {
101
	    	return $this->raiseError('La table inscription_configuration est vide...');
102
	    }
103
	}
104
 
105
	/**
106
	 * Renvoi un tableau avec les informations de inscription_attente
107
	 *
108
	 * @global  Un pointeur vers une connexion de base de donnee $GLOBALS['ins_db']
109
	 * @return array Un tableau ['id'], ['nom'], ['prenom'] ... ou la chaine vide si il n'y a personne en attente
110
	 * @access public
111
	 */
112
	function getInscritEnAttenteModeration() {
113
		$requete = 'select * from inscription_attente';
114
		$resultat = $GLOBALS['ins_db']->query($requete);
115
 
116
		$tableau_inscrit = array();
117
		if (DB::isError($resultat)) return "Echec de la requete : $requete<br />".$resultat->getMessage() ;
118
		    if ($resultat->numRows() != 0) {
119
			    while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
120
				    $donnees = unserialize (stripslashes($ligne->ia_donnees)) ;
121
				    array_push ($tableau_inscrit, array_merge (array('id' => $ligne->ia_id_inscription, 'date' => $ligne->ia_date), $donnees));
122
			    }
123
			    return $tableau_inscrit;
124
		    } else {
125
	    		return '';
126
	    	}
127
	}
128
 
1431 alexandre_ 129
	/** Renvoi le tableau HTML des inscrits en attente
1421 alexandre_ 130
	 *
131
	 * @global	$GLOBALS['ins_url'] un objet Net_URL avec l url courante
132
	 * @param array Un tableau de tableau d inscrit avec ['id'],['nom'],['prenom'],['email'],['ville'],['date']
133
	 * @return string Un tableau HTML
134
	 */
135
 
136
	 function getTableauEnAttente($tableau) {
137
	 	$html = '';
138
 
1431 alexandre_ 139
	 	if (empty ($tableau)) {
140
	 		return INS_PAS_D_INSCRIT_EN_ATTENTE;
141
	 	}
1421 alexandre_ 142
	 	$table = new HTML_Table();
143
	 	$table->addRow(array (INS_NOM, INS_EMAIL, INS_VILLE, INS_DATE_INS, INS_ACTION), '', 'TH');
1431 alexandre_ 144
 
1421 alexandre_ 145
	 	$action = '<a href="'.$GLOBALS['ins_url']->getURL().'">'.'</a>';
146
	 	foreach ($tableau as $demandeur) {
1431 alexandre_ 147
	 		// L identifiant du demandeur dans l url
148
	 		$GLOBALS['ins_url']->addQueryString (INS_VARIABLE_ID_DEMANDEUR, $demandeur['id']) ;
149
	 		$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_VALIDER_INSCRIPTION);
150
	 		$valide = '<a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_VALIDER.'</a> / ';
151
	 		$GLOBALS['ins_url']->addQueryString(ANN_VARIABLE_ACTION, ANN_ACTION_SUPPRIMER_DEMANDE_INSCRIPTION);
152
	 		$valide .= '<a href="'.$GLOBALS['ins_url']->getURL().
153
					'" onclick="javascript:return confirm(\''.INS_SUPPRIMER.' ?\')">'.INS_SUPPRIMER.'</a>';
1467 alexandre_ 154
	 		$table->addRow(array($demandeur['a_nom'].' '.(isset($demandeur['a_prenom']) ? $demandeur['a_prenom']: ''), $demandeur['a_mail'],
155
	 							$demandeur['a_ville'], $demandeur['date'], $valide));
1421 alexandre_ 156
	 	}
157
	 	return $table->toHTML();
158
	 }
159
 
160
	/**
161
	 * Renvoie un tableau avec les moderateurs de l inscription
162
	 * ceux du champs ic_mail_moderateur
163
	 *
164
	 * @return array Un tableau de mail de moderateur
165
	 */
166
	function getModerateurs() {
167
 
168
	}
169
	/**
170
	 * Insere une demande d inscription dans la table inscription_attente et
171
	 * envoi un mail aux moderateurs
172
	 *
173
	 * @param	string	Un identifiant de session, soit genere aleatoirement soit venu de la tablea inscription_demande
174
	 * @global array la globale $GLOBALS['ins_config']
175
	 * @global mixed un pointeur vers une base de donnees $GLOBALS['ins_db']
176
	 * @return string Un message a renvoye a l utilisateur indiquant que sa demande a ete prise en compte
177
	 */
178
	function demandeInscriptionModere($valeurs) {
179
	// On stocke les informations dans un variable de session
180
	    // On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères
1431 alexandre_ 181
	    // afin d'eviter d'obtenir une url trop longue
1421 alexandre_ 182
	    $chaine = substr (session_id(), 0, 8) ;
183
	    $requete_verif = 'select * from inscription_attente where ia_id_inscription="'.$chaine.'"' ;
184
	    $resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ;
185
	    if ($resultat_verif->numRows() != 0) {
186
	        $requete_suppression = 'delete from inscription_attente where ia_id_inscription="'.$chaine.'"' ;
187
	        $GLOBALS['ins_db']->query ($requete_suppression) ;
188
	    }
189
	    $requete = 'insert into inscription_attente set ia_id_inscription="'.$chaine.'", ia_donnees="'.
190
	                addslashes(serialize($valeurs)).'", ia_date=NOW()' ;
191
	    $resultat = $GLOBALS['ins_db']->query ($requete) ;
192
	    if (DB::isError ($resultat)) {
193
	        echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
194
	    }
195
	    // On envoie un email aux moderateurs
196
 
197
	    require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php';
198
	    $tpl = new HTML_Template_IT() ;
199
	    // Le gabarit du mail est dans un template
200
	    // template 3
201
	    $url = $GLOBALS['ins_url']->getURL();
202
	    $requete = 'select it_template from inscription_template where it_id_template=3'.
203
	    			' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ;
204
 
205
	    if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) {
206
	    	echo 'erreur' ;
207
	    }
208
		$tpl->setVariable('URL_INSCRIPTION', $url) ;
209
		$mails_moderateur = split ('/\n/', $GLOBALS['ins_config']['ic_mail_moderateur']);
210
		foreach ($mails_moderateur as $mail) {
1467 alexandre_ 211
			mail ($mail, INS_MODERATION_SUJET,
212
				html_entity_decode(INS_NOUVELLE_INSCRIPTION_A_MODERE),
213
					'From: '.$GLOBALS['ins_config']['ic_from_mail_confirmation']) ;
1421 alexandre_ 214
		}
1467 alexandre_ 215
	    return true ;
1421 alexandre_ 216
	}
1431 alexandre_ 217
	/**
218
	 * 	Valide une demande d inscription
219
	 * 	Transfere les donnees de la table inscription_attente vers annuaire
220
	 *
221
	 * 	Envoie un email d avertissement a l inscrit
222
	 *
223
	 * @global array la globale ins_config
224
	 */
225
	function validerInscription() {
226
		$requete = 'SELECT ia_donnees FROM inscription_attente WHERE ia_id_inscription="'.$_GET[INS_VARIABLE_ID_DEMANDEUR].'"' ;
227
	    $resultat = $GLOBALS['ins_db']->query($requete) ;
228
	    if (DB::isError ($resultat)) {
229
		    return ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
230
	    }
231
	    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
232
	    $donnees = unserialize (stripslashes($ligne->ia_donnees)) ;
233
 
234
	    // dans les donnees serialisees, on recupere l identifiant de l inscription
235
	    // pour charger la globale ins_config
236
	    $GLOBALS['ins_config'] = inscription::getConfig($donnees['id_inscription']);
1467 alexandre_ 237
	    // Template du formulaire
238
   		$GLOBALS['ins_config']['ic_inscription_template'] = inscription::getTemplate(INS_TEMPLATE_FORMULAIRE,
239
    									$GLOBALS['ins_config']['ic_id_inscription']);
240
 
1431 alexandre_ 241
 
242
	    $id_utilisateur = inscription_insertion($donnees) ;
243
 
244
	    // Envoie du mail
1467 alexandre_ 245
	    $destinataire = $donnees['a_mail'];
246
	    $sujet = inscription::getTemplate(INS_TEMPLATE_MAIL_APRES_MODERATION_SUJET, $GLOBALS['ins_config']['ic_id_inscription']);
247
	    $corps = inscription::getTemplate(INS_TEMPLATE_MAIL_APRES_MODERATION_CORPS, $GLOBALS['ins_config']['ic_id_inscription']);
248
	    // Appel des actions desinscriptions des applications clientes
249
        $d = dir(GEN_CHEMIN_CLIENT);
250
		while (false !== ($repertoire = $d->read())) {
251
			if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php'))
252
			include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.inscription.inc.php' ;
253
		}
254
		$d->close();
255
		if (INS_CHAMPS_LETTRE != '' && isset ($donnees['a_lettre'])) {
256
			inscription_lettre($GLOBALS['ins_config']['ic_mail_inscription_news']) ;
257
		}
258
	    if (!mail ($destinataire, $sujet, $corps, 'From: '.$GLOBALS['ins_config']['ic_from_mail_confirmation'])) return 'erreur dans l\'envoi du mail';
1431 alexandre_ 259
 
260
	    inscription::supprimerDemandeInscription();
261
	}
262
	/**
263
	 * 	Supprime une demande d inscription dans la table inscription_attente
264
	 *
265
	 * @global	string	l indentifiant de la demande
266
	 * @global mixed la globale ins_db
267
	 */
268
	function supprimerDemandeInscription() {
269
		// Suppression de la ligne dans inscription_attente
270
	    $req_sup = 'delete from inscription_attente where ia_id_inscription="'.$_GET[INS_VARIABLE_ID_DEMANDEUR].'"';
271
	    $res_sup = $GLOBALS['ins_db']->query ($req_sup);
272
	    if (DB::isError ($res_sup)) {
273
		    return ("Echec de la requete : $req_sup<br />".$res_sup->getMessage()) ;
274
	    }
275
	}
276
 
277
	/**
278
	 * 	Supprimer un inscrit de l annuaire et appelle les fichiers
279
	 * 	client appli.desinscription.inc.php
280
	 *
281
	 * @static
282
	 * @global int l identifiant de l inscrit
283
	 * @global mixed la globale ins_db
284
	 */
285
 
286
	function supprimerInscription() {
287
 
288
	    $queryLogin = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_GET[INS_VARIABLE_ID_INSCRIT] ;
289
	    $resultLogin = $GLOBALS['ins_db']->query($queryLogin) ;
290
	    $rowLogin = $resultLogin->fetchRow(DB_FETCHMODE_ASSOC) ;
291
	    $mail = $rowLogin[INS_CHAMPS_MAIL];
292
 
293
	    // suppression
294
	    $query = 'delete from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'='.$_GET[INS_VARIABLE_ID_INSCRIT] ;
295
	    $resultat = $GLOBALS['ins_db']->query($query);
296
	    if (DB::isError ($resultat)) {
297
		    return ("Echec de la requete : $req_sup<br />".$res_sup->getMessage()) ;
298
	    }
299
	     // Appel des actions desinscriptions des applications clientes
300
	    $d = dir(GEN_CHEMIN_CLIENT);
301
		$id_utilisateur = $_GET[INS_VARIABLE_ID_INSCRIT];
302
		while (false !== ($repertoire = $d->read())) {
303
			if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php'))
304
			include_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.$repertoire.'.desinscription.inc.php' ;
305
		}
306
		$d->close();
307
	}
1467 alexandre_ 308
 
309
	function getTemplate($id_template, $id_inscription, $langue = INS_LANGUE_DEFAUT) {
310
 
311
	    $requete = 'select it_template from inscription_template where it_id_template="'.$id_template.'"'.
312
	    			' and it_i18n like "'.$langue.'%" and it_ce_inscription="'.$id_inscription.'"' ;
313
	    $resultat = $GLOBALS['ins_db']->query($requete);
314
	    if (DB::isError ($resultat)) {
315
		    $this->raiseError();
316
		}
317
		$ligne = $resultat->fetchRow (DB_FETCHMODE_OBJECT);
318
		return $ligne->it_template;
319
	}
1421 alexandre_ 320
}
1467 alexandre_ 321
 
322
 
323
class lettresAlphabet extends PEAR {
324
 
325
	var $url;
326
 
327
	var $variable_lettre ;
328
 
329
	/**
330
     * Constructeur
331
     *
332
     * @param Net_URL un objet Net_URL
333
     * @param string $variable_lettre le nom de la variable $_GET qui sera place dans l URL
334
     * @return void
335
     * @access public
336
     */
337
	function lettresAlphabet($url, $variable_lettre = 'lettre') {
338
		$this->url = $url ;
339
		$this->variable_lettre = $variable_lettre ;
340
	}
341
 
342
	/**
343
	 * Renvoie le code HTML d une liste avec les lettres
344
	 *
345
	 * @return string HTML
346
	 * @access public
347
	 */
348
	function toHMTL() {
349
 
350
		$res = '<ul class="liste_lettre">'."\n" ;
351
		for ($i = 65 ; $i <91 ; $i++) {
352
			$this->url->addQueryString($this->variable_lettre, chr($i)) ;
353
			$res .= "\t".'<li class="liste_lettre"><a class="lien_alphabet" '.
354
					'href="'.
355
					$this->url->getURL().'">';
356
			$res .= chr($i) ;
357
			$res .= '</a></li>'."\n";
358
		}
359
		$res .= '</ul>';
360
		return $res ;
361
	}
362
}
363
 
1163 alexandre_ 364
//-- Fin du code source    ------------------------------------------------------------
365
/*
366
* $Log: not supported by cvs2svn $
1467 alexandre_ 367
* Revision 1.3  2007-06-01 13:47:47  alexandre_tb
368
* nouvelles methodes
369
*
1431 alexandre_ 370
* Revision 1.2  2007-05-25 14:31:24  alexandre_tb
371
* en cours
372
*
1421 alexandre_ 373
* Revision 1.1  2006/12/13 13:26:52  alexandre_tb
374
* version initiale
375
*
1163 alexandre_ 376
*/
377
?>