Subversion Repositories Applications.papyrus

Rev

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