Subversion Repositories Applications.papyrus

Rev

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

Rev Author Line No. Line
810 florian 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                Florian SCHMITT <florian@ecole-et-nature.org>
24
//Autres auteurs :
25
*@copyright         Outils-reseaux 2006-2040
26
*@version           05 avril 2006
27
// +-----------------------------------------------------------------------------------------------+
28
//
29
// $Id$
30
// FICHIER : $RCSfile$
31
// AUTEUR    : $Author$
32
// VERSION : $Revision$
33
// DATE        : $Date$
34
*/
35
 
36
 
1298 neiluj 37
include_once 'inscription.fonct.wiki.php' ;
38
if (INS_UTILISE_SPIP) include_once 'inscription.fonct.spip.php' ;
39
 
810 florian 40
/** function inscription_onglets()  Affiche les onglets de présentation de la structure
41
*
42
*
43
*
44
*	@return string HTML
45
*/
46
function inscription_onglets() {
47
	//on trouve l'id de la fiche en fonction de l'onglet choisi auparavant
48
	if (isset($_GET['voir_fiche'])) {
49
		$id_fiche=$_GET['voir_fiche'];
50
	} elseif (isset($_GET['voir_abonnement'])) {
51
		$id_fiche=$_GET['voir_abonnement'];
52
	} elseif (isset($_GET['voir_actus'])) {
53
		$id_fiche=$_GET['voir_actus'];
54
	} elseif (isset($_GET['voir_ressources'])) {
55
		$id_fiche=$_GET['voir_ressources'];
56
	} elseif (isset($_GET['voir_competences'])) {
57
		$id_fiche=$_GET['voir_competences'];
1298 neiluj 58
	} else {
59
		$id_fiche = '';
810 florian 60
	}
61
 
62
	//preparation de l'affichage des onglets
63
	$res='<ul id="onglets_inscription">'."\n";
64
	//partie présentation
65
	$GLOBALS['ins_url']->addQueryString('voir_fiche', $id_fiche);
1298 neiluj 66
	$res .= '<li id="fiche"';
67
	if (isset($_GET['voir_fiche'])) $res .= ' class="onglet_actif" ';
68
	$res .= '><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_PRESENTATION.'</a>'."\n".'</li>'."\n";
810 florian 69
	$GLOBALS['ins_url']->removeQueryString('voir_fiche');
70
	if ($id_fiche==$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)) {
71
		//partie abonnement
72
		$GLOBALS['ins_url']->addQueryString('voir_abonnement', $id_fiche);
1298 neiluj 73
		$res .= '<li id="abonnements"';
74
		if (isset($_GET['voir_abonnement'])) $res .= ' class="onglet_actif" ';
75
		$res .= '><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_ABONNEMENTS.'</a></li>'."\n" ;
810 florian 76
		$GLOBALS['ins_url']->removeQueryString('voir_abonnement');
77
	}
78
	//partie actualites
79
	$GLOBALS['ins_url']->addQueryString('voir_actus', $id_fiche);
80
	$res .= '<li id="actus"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_ACTUALITES.'</a>'."\n".'</li>'."\n";
81
	$GLOBALS['ins_url']->removeQueryString('voir_actus');
82
	//partie ressources
83
	$GLOBALS['ins_url']->addQueryString('voir_ressources', $id_fiche);
84
	$res .= '<li id="ressources"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_RESSOURCES.'</a>'."\n".'</li>'."\n";
85
	$GLOBALS['ins_url']->removeQueryString('voir_ressources');
86
	//partie competences
833 florian 87
	//$GLOBALS['ins_url']->addQueryString('voir_competences', $id_fiche);
88
	//$res .= '<li id="competences"><a href="'.$GLOBALS['ins_url']->getURL().'">'.INS_COMPETENCES.'</a>'."\n".'</li>'."\n";
89
	//$GLOBALS['ins_url']->removeQueryString('voir_competences');
810 florian 90
	$res.= '</ul>'."\n";
91
	return $res;
92
}
93
 
94
/** function affiche_onglet_info()  sélectionne le type d'information à montrer pour une fiche
95
*
96
*
97
*
98
*	@return string HTML
99
*/
100
function affiche_onglet_info() {
1292 neiluj 101
	include_once INS_CHEMIN_APPLI.'bibliotheque/inscription.fonct.php';
810 florian 102
    include_once INS_CHEMIN_APPLI.'bibliotheque/inscription.class.php';
103
    if ( isset($_GET['voir_fiche']) ) {
104
    	$res=info($_GET['voir_fiche'], 'fiche');
105
    } elseif (isset($_GET['voir_abonnement'])) {
106
    	$res=info($_GET['voir_abonnement'], 'abonnement');
107
    } elseif (isset($_GET['voir_actus'])) {
108
    	$res=info($_GET['voir_actus'], 'actus');
109
    } elseif (isset($_GET['voir_ressources'])) {
110
    	$res=info($_GET['voir_ressources'], 'ressources');
111
    } elseif (isset($_GET['voir_competences'])) {
112
    	$res=info($_GET['voir_competences'], 'competences');
113
    }
114
    return $res;
115
}
116
 
117
/** function Annuaire_recherche ()  Moteur de recherche dans l'annuaire des inscrits
118
*
119
*
120
*
121
*	@return string HTML
122
*/
123
function Annuaire_recherche() {
124
	$res ='<h2>'.INS_RECHERCHE_ANNUAIRE_DES_INSCRITS.'</h2>'."\n";
125
	$form =& new HTML_QuickForm('form_recherche_annuaire', 'post', str_replace('&amp;', '&', $GLOBALS['ins_url']->getURL()));
126
    $squelette =& $form->defaultRenderer();
127
    $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'<table>'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n");
128
    $squelette->setElementTemplate( '<tr>'."\n".
129
                                    '<td style="padding:5px;text-align:right;">{label}'.
130
                                    '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
131
                                    '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
132
									' : </td>'."\n".
133
                                    '<td style="padding:5px;text-align:left;">{element}</td>'."\n".
134
                                    '</tr>'."\n" );
135
    $squelette->setElementTemplate( '<tr>'."\n".'<td colspan=2 style="padding:5px;">{label}{element}</td>'."\n".'</tr>'."\n", 'bouton_rechercher');
136
 
1292 neiluj 137
    $option_type=array ('0' => INS_PERSONNES_OU_STRUCTURES,
138
                        '1' => INS_PERSONNES,
139
                        '2' => INS_STRUCTURES);
140
    $form->addElement('select', 'nom_type', INS_JE_RECHERCHE, $option_type);
141
 
810 florian 142
    //requete pour recuperer la liste des pays
143
    $requete = 'SELECT '.INS_CHAMPS_ID_PAYS.', '.INS_CHAMPS_LABEL_PAYS.' FROM '.INS_TABLE_PAYS.' WHERE '.INS_CHAMPS_I18N_PAYS.'="fr-FR"';
144
	$resultat = $GLOBALS['ins_db']->query($requete) ;
145
	if (DB::isError($resultat)) {
146
	    die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
147
	}
148
	$option_pays = array('zz' => INS_TOUS_PAYS) ;
149
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
150
	    $option_pays[$ligne[INS_CHAMPS_ID_PAYS]] = $ligne[INS_CHAMPS_LABEL_PAYS] ;
151
	}
152
    $form->addElement('select', 'nom_pays', INS_PAYS, $option_pays);
153
 
154
    //requete pour recuperer la liste des départements
155
    $requete = 'SELECT '.INS_CHAMPS_ID_DEPARTEMENT.', '.INS_CHAMPS_NOM_DEPARTEMENT.' FROM '.INS_TABLE_DPT;
156
	$resultat = $GLOBALS['ins_db']->query($requete) ;
157
	if (DB::isError($resultat)) {
158
	    die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
159
	}
160
	$option_departements = array('0' => INS_TOUS_DEPARTEMENTS) ;
161
	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
162
	    $option_departements[$ligne[INS_CHAMPS_ID_DEPARTEMENT]] = $ligne[INS_CHAMPS_NOM_DEPARTEMENT] ;
163
	}
164
    $form->addElement('select', 'nom_departement', INS_DEPARTEMENT_POUR_LA_FRANCE, $option_departements);
165
 
166
	$form->addElement('text', 'nom_annuaire', INS_NOM_ANNUAIRE);
167
 
168
	$form->addElement('submit', 'bouton_rechercher', INS_RECHERCHER);
169
 
170
	//valeurs par defaut
171
	$defauts=array('nom_pays'=>'fr','nom_departement'=>'0');
172
	$form->setDefaults($defauts);
173
 
174
	//affichage du formulaire
175
	$res .=$form->toHtml();
176
 
177
	//on teste si l'on affiche le resultat de la recherche ou
1292 neiluj 178
	if (isset($_POST['nom_type'])) {
810 florian 179
		$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL;
180
		$requete .= ' FROM '.INS_ANNUAIRE.' WHERE ';
181
		$req_where=0;
1292 neiluj 182
		if ($_POST['nom_type']==1) {
183
			$requete .= INS_CHAMPS_EST_STRUCTURE.'=0 ';
184
			$req_where=1;
185
		} elseif ($_POST['nom_type']==2) {
186
			$requete .= INS_CHAMPS_EST_STRUCTURE.'=1 ';
187
			$req_where=1;
810 florian 188
		}
189
		if ($_POST['nom_pays']!='0'and$_POST['nom_pays']!='zz') {
190
			if ($req_where) {
191
				$requete .= 'AND ';
192
			} else {
193
				$req_where=1;
194
			}
195
			$requete .= INS_CHAMPS_PAYS.'="'.$_POST['nom_pays'].'" ';
196
		}
197
		if ($_POST['nom_departement']!='0') {
198
			if ($req_where) {
199
				$requete .= 'AND ';
200
			} else {
201
				$req_where=1;
202
			}
203
			$requete .= INS_CHAMPS_DEPARTEMENT.'="'.$_POST['nom_departement'].'" ';
204
		}
205
		if ($_POST['nom_annuaire']!='') {
206
			if ($req_where) {
207
				$requete .= 'AND ';
208
			} else {
209
				$req_where=1;
210
			}
211
			$requete .= '('.INS_CHAMPS_NOM.' LIKE "%'.$_POST['nom_annuaire'].'%"'.
212
						' OR '.INS_CHAMPS_PRENOM.' LIKE "%'.$_POST['nom_annuaire'].'%"'.
1292 neiluj 213
						' OR '.INS_CHAMPS_SIGLE_STRUCTURE.' LIKE "%'.$_POST['nom_annuaire'].'%"'.
214
						' OR '.INS_CHAMPS_DESCRIPTION.' LIKE "%'.$_POST['nom_annuaire'].'%") ';
810 florian 215
		}
216
		if (!$req_where) $requete .= '1';
217
		$requete .=' ORDER BY '.INS_CHAMPS_NOM;
1292 neiluj 218
		$resultat = $GLOBALS['ins_db']->query($requete);
810 florian 219
		if ($resultat->numRows()>0) {
220
			$res .='<h2>'.INS_RESULTATS_RECHERCHE.' ('.$resultat->numRows().' '.INS_ENTREES.')</h2>'."\n";
221
			$res .='<p class="zone_info">'.INS_CLIQUER_ELEMENT_LISTE.'</p>'."\n";
222
			$i=0;
223
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
224
				$donnees_membres[$i++]=$ligne;
225
			}
1292 neiluj 226
		    $res .= listes_inscrit($donnees_membres);
227
		}
228
		else {
810 florian 229
			$res .='<h2>'.INS_RESULTATS_RECHERCHE.'</h2>'."\n";
230
			$res .= '<p class="zone_alert">'.INS_PAS_DE_RESULTATS.'</p>'."\n";
231
		}
1292 neiluj 232
	} else {
233
		$res .='<h2>'.INS_DIX_DERNIERES_INSCRIPTIONS.'</h2>'."\n";
234
		$requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL;
235
		$requete .= ' FROM '.INS_ANNUAIRE.' ORDER BY '.INS_CHAMPS_DATE.' DESC LIMIT 0 , 10';
236
		$resultat = $GLOBALS['ins_db']->query($requete);
237
		if ($resultat->numRows()>0) {
238
			$i=0;
239
			while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
240
				$donnees_membres[$i++]=$ligne;
241
			}
242
		    $res .= listes_inscrit($donnees_membres, 0);
810 florian 243
		}
1292 neiluj 244
		else {
245
			$res .= '<p class="zone_alert">'.INS_PAS_DE_RESULTATS.'</p>'."\n";
246
		}
810 florian 247
	}
248
    return $res ;
249
}
250
 
251
/**
252
 *  Renvoie le code HTML de la liste des inscrits
253
 *  en fonction de la requete passé en parametre
254
 *
255
 * @return  Renvoie le code HTML de la liste des inscrits
256
 */
257
 
1292 neiluj 258
function listes_inscrit(& $donnees_membres, $affiche_form_mail=1) {
810 florian 259
    $res = '';
833 florian 260
    if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) {$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'" method="post" name="formmail">'."\n";}
261
    $res .= '<ul style="clear:both;">'."\n";
814 alexandre_ 262
    if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) {
263
 
264
    	$res .= '<form action="'.$GLOBALS['ins_url']->getURL().'" method="post" name="formmail">'."\n";
265
    	}
810 florian 266
    $res .= '<ul>'."\n";
267
    for ($i=0;$i<count($donnees_membres);$i++) {
1292 neiluj 268
    	$id = array_shift($donnees_membres[$i]);
810 florian 269
    	$GLOBALS['ins_url']->addQueryString('voir_fiche', $id);
812 florian 270
    	$res .= '<li>'."\n";
810 florian 271
    	if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) {
811 florian 272
    		$res.='<input type="checkbox" name="select[]" value="'.$id.'" />'."\n";
810 florian 273
    	}
1292 neiluj 274
    	$res .= '<a href="'.$GLOBALS['ins_url']->getURL().'">'."\n";
275
    	$res .= '<strong>'.$donnees_membres[$i][INS_CHAMPS_NOM].
276
				'&nbsp;'.$donnees_membres[$i][INS_CHAMPS_PRENOM].'</strong>'."\n".
277
    	        '&nbsp;'.$donnees_membres[$i][INS_CHAMPS_CODE_POSTAL].
278
    	        '&nbsp;'.$donnees_membres[$i][INS_CHAMPS_VILLE];
811 florian 279
    	$res .= '</a>'."\n".'</li>'."\n";
810 florian 280
    }
281
    $res .= '</ul>'."\n";
282
    if ($GLOBALS['AUTH']->getAuth()&&$affiche_form_mail) {
283
    	$res .= INS_CHECK_UNCHECK ;
284
    	$res .= '&nbsp;<input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');"><br />';
285
    	$res .= '<h3>'.INS_ENVOYER_MAIL.'</h3>'."\n";
286
    	$res .= '<p style="text-align:right;">'.INS_SUJET.'&nbsp;:&nbsp;<input style="border:1px solid #000;width:450px;" type="text" name="titre_mail"><br />'."\n".
287
           		INS_MESSAGE.'&nbsp;:&nbsp;<textarea style="border:1px solid #000;width:450px;" name="corps" rows="5" cols="60"></textarea></p>'."\n".
833 florian 288
           		'<p style="width:100px;margin:4px auto;text-align:center;"><input name="bouton_envoi_mail" type="submit" value="'.INS_ENVOYER.'" /></p>'."\n".
1292 neiluj 289
           		'<p style="width:100px;margin:4px auto;text-align:center;"><input type="submit" value="'.INS_ENVOYER.'" /></p>'."\n".
814 alexandre_ 290
           		'<input type="hidden" name="fin" value="true" /><input type="hidden" name="mailer" value="1" />'.
810 florian 291
				'</form>'."\n";
292
	} else {
293
		if ($affiche_form_mail) $res .='<br /><p class="zone_info">'.INS_PAS_IDENTIFIE.'</p>'."\n";
294
    }
295
    return $res ;
296
}
297
 
298
 
299
 
300
/** envoie_mail_depuis_annuaire()
301
 *
302
 *
303
 * @return  envoie l'email
304
 */
305
 
306
function envoie_mail_depuis_annuaire() {
307
    $requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE.
308
            " where ".INS_CHAMPS_ID."='".$GLOBALS['AUTH']->getAuthData (INS_CHAMPS_ID)."'";
309
    $resultat = $GLOBALS['ins_db']->query($requete);
310
    if (DB::isError($resultat)) {
311
        die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo());
312
    }
313
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
314
    $entete = "From: <".$ligne[INS_CHAMPS_MAIL].">\n";
315
 
933 florian 316
    $_POST['corps'] .= INS_PIED_MESSAGE;
810 florian 317
    $_POST['corps'] = stripslashes($_POST['corps']) ;
318
    $liste = "" ;
319
    $liste_numero = implode (',', $_POST['select']) ;
320
    $requete_liste_mail = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.
321
    						' in ('.$liste_numero.')' ;
322
    $resultat_liste_mail = $GLOBALS['ins_db']->query($requete_liste_mail);
323
 
324
    while ($ligne_liste_mail = $resultat_liste_mail->fetchRow(DB_FETCHMODE_ASSOC)) {
325
        mail ($ligne_liste_mail[INS_CHAMPS_MAIL], stripslashes($_POST['titre_mail']), $_POST['corps'] , $entete) ;
326
        $liste .= $ligne_liste_mail[INS_CHAMPS_MAIL]."\n" ;
327
    }
328
 
329
    $_POST['corps'] .= "\n----------------------------------------------------------------------------";
933 florian 330
    $_POST['corps'] .= "\n".INS_MESSAGE_ENVOYE_A." :\n $liste" ;
810 florian 331
 
332
    mail (INS_MAIL_ADMIN_APRES_INSCRIPTION, stripslashes($_POST['titre_mail']), $_POST['corps'], $entete);
333
    $_POST['corps'] = '';
334
    $_POST['titre_mail'] = '';
933 florian 335
    return '<div>'.INS_MAIL_ENVOYE.'</div>' ;
810 florian 336
}
337
 
338
/** function carto_liste_fiches()
339
*
340
*
341
*	@return string  HTML
342
*/
1292 neiluj 343
function carto_liste_fiches(&$monde, $nom_table1, $nom_table2, $nom_champs_pays, $nom_champs_cp, $requete_sql) {
810 florian 344
 
345
    global $mailer;
346
    global $select;//utilisé dans liste_inscrit.php
347
 
348
	$javascript = "
349
	function confirmer () {
350
        if (window.confirm ('Cliquez sur OK pour confirmer.')) {
351
            window.formmail.submit();
352
        }
353
    }
354
 
355
	function setCheckboxes(the_form)
356
	{
357
    	var do_check=document.forms[the_form].elements['selecttotal'].checked;
358
    	var elts            = document.forms[the_form].elements['select[]'];
359
    	var elts_cnt = (typeof(elts.length) != 'undefined')
360
                        ? elts.length
361
                        : 0;
362
    	if (elts_cnt) {
363
        	for (var i = 0; i < elts_cnt; i++) {
364
            	elts[i].checked = do_check;
365
        	} // Fin for
366
    	}
367
    	else {
368
       	 elts.checked = do_check;
369
    	} // Fin if... else
370
    	return true;
371
	} // Fin de la fonction 'setCheckboxes()'
372
 
373
	";
374
	GEN_stockerCodeScript($javascript);
375
 
376
	$res = '';
1292 neiluj 377
	$tabmonde = explode ('*',$monde->historique);
810 florian 378
 
1292 neiluj 379
	// Premier cas, on vient de cliquer sur un pays qui n'est pas
380
	// la France, on affiche les adhérents de ce pays
381
	if (count($tabmonde) == 3) {
382
    	$argument = $tabmonde[2];
383
    	$query = 'SELECT * FROM carto_PAYS WHERE CP_ID_pays="'.$argument.'"';
384
    	$result = $GLOBALS['ins_db']->query($query);
385
    	if (DB::isError($result)) {
386
    		die ($result->getMessage().'<br />'.$result->getDebugInfo()) ;
810 florian 387
    	}
1292 neiluj 388
    	$row = $result->fetchRow(DB_FETCHMODE_OBJECT) ;
389
    	$pays = $row->CP_Intitule_pays;
390
    	$monde->nom = $monde->nom.'*'.$pays;
391
    	$tabonglet = explode ('*', $monde->historique);
392
    	$tabnom = explode ('*', $monde->nom);
393
    	$res .='<br /><strong>'.INS_RETOUR_A_LA_CARTE."\n";
394
    	foreach ($tabonglet as $key => $value) {
395
        	if ($key == 0) {
396
            	$chemin = $value;
397
            	$value = 'monde';
398
            	$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&amp;historique_cartes=$chemin\">&nbsp;&gt;&nbsp;".$tabnom[$key]."</a>";
399
        	} else if ($key == (count($tabonglet)-1)) {
400
            	$res .= "<a class=\"chemin_carto\">&nbsp;&gt;&nbsp;$pays</a>";
401
        	} else {
402
            	$chemin .= '*'.$value;
403
            	$res .= "<a class=\"chemin_carto\" href=\"".$monde->url."&amp;historique_cartes=$chemin\">&nbsp;&gt;&nbsp;".$tabnom[$key]."</a>";
404
        	}
405
    	}
406
        $res .= '</strong>'."\n";
407
    	$capitale = $row->CP_Intitule_capitale;
408
	    $query2 = ' SELECT count('.$nom_champs_cp.') as nbr'.
409
    	          ' FROM '.$nom_table1;
410
    	if ($nom_table2!=0) $query2 .=  ', '.$nom_table2;
411
    	$query2 .= ' WHERE '.$nom_champs_pays.'="'.$argument.'"';
412
    	if ($requete_sql!='') $query2 .=  ' AND ('.$requete_sql.')';
413
 
414
    	$result2 = $GLOBALS['ins_db']->query($query2);
415
    	if (DB::isError($result2)) {
416
    		die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ;
417
    	}
418
	    $row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT) ;
419
	    $res .= '<br /><br /><div class="info_pays">'.$pays.' (capitale: '.$capitale.') : ' ;
420
	    if ($row2->nbr == 0) {
421
		    $res .= INS_AUCUN_INSCRIT.' '.INS_LABEL_PROJET ;
422
 
423
	    }
424
	    else if ($row2->nbr == 1) {
425
		    $res .= $row2->nbr.' '.INS_INSCRIT.' '.INS_LABEL_PROJET ;
810 florian 426
	    }
427
	    else {
1292 neiluj 428
		    $res .= $row2->nbr.' '.INS_INSCRIT.'s '.INS_LABEL_PROJET ;
429
	    }
430
	    $res .= "</div>\n";
431
	    if ($row2->nbr>0) {
432
		    if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) {
433
			    $res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ;
434
		    }
435
		    else {
436
			    $requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL.' FROM '.$nom_table1;
437
			    if ($nom_table2!=0) $requete .=  ', '.$nom_table2;
438
			    $requete .= ' WHERE '.$nom_champs_pays.'="'.$argument.'"';
439
			    if ($requete_sql!='') $requete .=  ' AND ('.$requete_sql.')';
440
			    $requete .= ' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM;
441
				$resultat = $GLOBALS['ins_db']->query($requete);
442
				$i=0;
443
				while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
444
					$donnees_membres[$i++]=$ligne;
445
				}
446
				$res .= listes_inscrit($donnees_membres, 1);
447
				if ($mailer==1) {
448
				    if (!is_array($select)) {
449
					    $res .= "<div>".INS_NO_DESTINATAIRE."</div>";
450
				    }
451
				    else {
452
					    $res .= '<div class="zone_info">'.INS_MESSAGE_ENVOYE.'</div>'."\n" ;
453
					    carto_envoie_mail() ;
454
				    }
455
				}
456
				else {
457
				    $res .= carto_texte_cocher() ;
458
				}
459
				$res .= carto_formulaire() ;
460
		    }
461
	    }
462
 
463
		// 2 ème cas, on vient de cliquer sur un département français
464
		} else if (count($tabmonde) == 4) {
465
	    $argument = $tabmonde[3];
466
	    $query = 'SELECT * FROM '.INS_TABLE_DPT.' WHERE '.INS_CHAMPS_ID_DEPARTEMENT.'='.$argument;
467
	    $result = $GLOBALS['ins_db']->query($query);
468
	    if (DB::isError($result)) {
469
	        die ($result->getMessage() .'<br />'.$result->getDebugInfo());
470
	    }
471
	    $row = $result->fetchRow(DB_FETCHMODE_ASSOC);
472
	    $nom = $row[INS_CHAMPS_NOM_DEPARTEMENT];
473
 
474
	    $query2 = ' SELECT count('.$nom_champs_cp.') as nbr'.
475
	              ' FROM '.$nom_table1;
476
	    if ($nom_table2!=0) $query2 .=  ', '.$nom_table2;
477
	    $query2 .= ' WHERE '.$nom_champs_cp.' LIKE "'.$argument.'%"'.
478
	              ' AND '.$nom_champs_pays.'="FR"';
479
	    if ($requete_sql!='') $query2 .=  ' AND ('.$requete_sql.')';
480
	    $result2 = $GLOBALS['ins_db']->query($query2);
481
	    if (DB::isError($result2)) {
482
	    	die ($result2->getMessage().'<br />'.$result2->getDebugInfo()) ;
483
	    }
484
 
485
	    $row2 = $result2->fetchRow(DB_FETCHMODE_OBJECT);
486
	    $res .= '<br /><p class="zone_info">'."\n" ;
487
	    if ($row2->nbr == 0) {
488
	        $res .= INS_AUCUN_INSCRIT." ".INS_LABEL_PROJET ;
489
	    }
490
	    else if ($row2->nbr == 1) {
491
	        $res .= $row2->nbr." ".INS_INSCRIT." ".INS_LABEL_PROJET ;
492
	    }
493
	    else {
494
	        $res .= $row2->nbr." ".INS_INSCRIT."s ".INS_LABEL_PROJET ;
495
	    }
496
	    $res .= '</p>'."\n";
497
	    if ($row2->nbr>0) {
498
		    if ((INS_NECESSITE_LOGIN)and(!$GLOBALS['AUTH']->getAuth())) {
499
		    	$res .= '<br /><p class="zone_alert">'.INS_VOUS_DEVEZ_ETRE_INSCRIT.'</p>'."\n" ;
500
		    } else {
501
			    $requete = 'SELECT '.INS_CHAMPS_ID.', '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM.', '.INS_CHAMPS_VILLE.', '.INS_CHAMPS_CODE_POSTAL.' FROM '.$nom_table1;
502
			    if ($nom_table2!=0) $requete .=  ', '.$nom_table2;
503
 
504
			    if (strlen($argument)==1) {
505
			    	$argument='0'.$argument;
810 florian 506
			    }
1292 neiluj 507
 
508
			    $requete .= ' WHERE '.$nom_champs_cp.' LIKE "'.$argument.'%"'.
509
			    ' AND '.$nom_champs_pays.'="FR"';
510
			    if ($requete_sql!='') $requete .=  ' AND ('.$requete_sql.')';
511
			    $requete .= ' ORDER BY '.INS_CHAMPS_NOM.', '.INS_CHAMPS_PRENOM;
512
				$resultat = $GLOBALS['ins_db']->query($requete);
513
				$i=0;
514
				while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
515
					$donnees_membres[$i++]=$ligne;
516
				}
517
				$res .= listes_inscrit($donnees_membres, 1);
518
 
519
			    if ($mailer==1) {
520
				    if (!is_array($select)) {
521
					    $res.= INS_NO_DESTINATAIRE;
522
				    } else {
523
					    $res .= '<p class="zone_info">'.INS_MESSAGE_ENVOYE."</p>\n" ;
524
					    carto_envoie_mail() ;
525
				    }
810 florian 526
			    }
1292 neiluj 527
		    }
810 florian 528
	    }
529
	}
530
	return $res;
531
}
532
 
533
 
534
/** function carto_texte_cocher ()
535
*
536
*
537
*	@return string  HTML
538
*/
539
function carto_texte_cocher() {
540
    $res = '<br />'.INS_CHECK_UNCHECK ;
541
    $res .= '&nbsp;<input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');" />'."\n";
542
    return $res ;
543
}
544
 
545
 
546
/** function carto_formulaire ()
547
*
548
*
549
*
550
*	@return string  HTML
551
*/
552
function carto_formulaire($titre_mail="", $corps="") {
553
	$res = '<br /><h2>'.INS_ENVOYER_MAIL.'</h2><br />'."\n".
554
		   INS_SUJET.' :<br /><input class="forml" type="text" name="titre_mail" size="60" value="'.$titre_mail.'" /><br /><br />'."\n".
555
		   INS_MESSAGE.' :<br /><textarea class="forml" name="corps" rows="5" cols="60">'.$corps.'</textarea><br /><br />'."\n".
556
		   '<input class="bouton" type="submit" onclick="javascript:confirmer();" value="'.INS_ENVOYER.'" />'."\n".
557
		   '</form>'."\n";
558
	return $res ;
559
}
560
 
561
/** envoie_mail()
562
 *
563
 *
564
 * @return  envoie l'email
565
 */
566
function carto_envoie_mail() {
567
    $requete = 'SELECT '.INS_CHAMPS_MAIL.' FROM '.INS_ANNUAIRE.' WHERE '.INS_CHAMPS_ID.'='.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID);
568
    $resultat = $GLOBALS['ins_db']->query($requete);
569
    if (DB::isError($resultat)) {
570
        die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo());
571
    }
572
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
814 alexandre_ 573
 
1298 neiluj 574
    include_once PAP_CHEMIN_API_PEAR.'Mail.php' ;
810 florian 575
 
814 alexandre_ 576
    $entetes['From']    = $ligne[INS_CHAMPS_MAIL];
577
 
578
	$objet_mail =& Mail::factory('smtp');
579
	$entetes['Subject'] = $GLOBALS['titre_mail'];
580
	$entetes['Date'] = date("m-d-Y H:i") ;
810 florian 581
    $GLOBALS['corps'] .= INS_TEXTE_FIN_MAIL;
814 alexandre_ 582
 
810 florian 583
    $liste = "" ;
814 alexandre_ 584
    $destinataire = array() ;
810 florian 585
    foreach ($GLOBALS['select'] as $key => $value) {
814 alexandre_ 586
    	$requete = 'select '.INS_CHAMPS_MAIL.' from '.INS_ANNUAIRE.' where '.INS_CHAMPS_ID.'="'.$value.'"';
587
    	$mail = $GLOBALS['ins_db']->getOne($requete) ;
588
        array_push ($destinataire, $mail) ;
589
        $liste .= $mail."\n" ;
810 florian 590
    }
814 alexandre_ 591
    $objet_mail->send($destinataire, $entetes, $GLOBALS['corps']);
810 florian 592
 
814 alexandre_ 593
    $GLOBALS['corps'] .= "
594
----------------------------------------------------------------------------".INS_MESSAGE_ENVOYE_A."
595
$liste" ;
810 florian 596
 
814 alexandre_ 597
    mail(INS_MAIL_ADMIN, stripslashes(INS_SURVEILLANCE_ENVOI_MAIL.$GLOBALS['titre_mail']), $GLOBALS['corps'], $entetes);
810 florian 598
    $GLOBALS['corps'] = '';
599
    $GLOBALS['titre_mail'] = '';
600
}
1298 neiluj 601
 
602
 
603
//-----Fonctions de l'inscription-----------------------------------------------------+
604
 
605
 
606
/**
607
 *
608
 * @param   array   les valeurs renvoyés par le formulaire
609
 * @return
610
 */
611
function inscription_demande($valeurs) {
612
    // On stocke les informations dans un variable de session
613
    // On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères
614
    // afin d'éviter d'obtenir une url trop longue
615
    $chaine = substr (session_id(), 0, 8) ;
616
    $requete_verif = 'select * from inscription_demande where id_identifiant_session="'.$chaine.'"' ;
617
    $resultat_verif = $GLOBALS['ins_db']->query ($requete_verif) ;
618
    if ($resultat_verif->numRows() != 0) {
619
        $requete_suppression = 'delete from inscription_demande where id_identifiant_session="'.$chaine.'"' ;
620
        $GLOBALS['ins_db']->query ($requete_suppression) ;
621
    }
622
    $requete = 'insert into inscription_demande set id_identifiant_session="'.$chaine.'", id_donnees="'.
623
                addslashes(serialize($valeurs)).'", id_date=NOW()' ;
624
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
625
    if (DB::isError ($resultat)) {
626
        echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
627
    }
628
    // On envoie un email de confirmation pour l'utilisateur
629
    $GLOBALS['ins_url']->addQueryString ('id', $chaine) ;
630
 
631
 
632
    if (INS_UTILISE_REECRITURE_URL) {
633
        $url = 'http://'.$GLOBALS['ins_url']->host.'/'.INS_URL_PREFIXE.$chaine ;
634
    } else {
635
        $url = str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()) ;
636
    }
637
 
638
    require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php';
639
    $tpl = new HTML_Template_IT() ;
640
    // Le gabarit du mail est dans un template
641
    // template 2
642
    $requete = 'select it_template from inscription_template where it_id_template=2'.
643
    			' and it_i18n like "%'.INS_LANGUE_DEFAUT.'"' ;
644
 
645
    if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) {
646
    	echo 'erreur' ;
647
    }
648
	$tpl->setVariable('URL_INSCRIPTION', $url) ;
649
 
650
    mail ($GLOBALS['email'], 'Inscription', $tpl->get(), 'From: '.INS_MAIL_ADMIN_APRES_INSCRIPTION) ;
651
}
652
 
653
/**
654
 *
655
 * @param   array   les valeurs renvoyés par le formulaire
656
 * @return
657
 */
658
 
659
function inscription_validee($valeurs) {
660
	inscription_insertion($valeurs) ;
661
	$GLOBALS['AUTH']->username = $valeurs['email'] ;
662
	$GLOBALS['AUTH']->password = $valeurs['mot_de_passe'] ;
663
	// On loggue l'utilisateur
664
	$GLOBALS['AUTH']->login() ;
665
	// inscription à la lettre d'information
666
	if (INS_CHAMPS_LETTRE != '' && isset ($valeurs['lettre'])) {
667
		inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
668
	}
669
}
670
 
671
/**
672
*   Renvoie l'accueil de l'inscription
673
*
674
*   @return string	HTML
675
*/
676
function inscription_AUTH_formulaire_login() {
677
    require_once PAP_CHEMIN_RACINE.'api/pear/HTML/Template/IT.php';
678
    $tpl = new HTML_Template_IT() ;
679
    // Le formulaire pour se logguer est dans un template
680
    // template 1
681
    $requete = 'SELECT it_template FROM inscription_template WHERE it_id_template=1'.
682
    			' AND it_i18n LIKE "%'.INS_LANGUE_DEFAUT.'"' ;
683
 
684
    if (!$tpl -> setTemplate($GLOBALS['ins_db']->getOne ($requete))) {
685
    	echo 'erreur' ;
686
    }
687
	$tpl->setVariable('URL_INSCRIPTION', $GLOBALS['ins_url']->getURL());
688
    return $tpl->get() ;
689
 
690
}
691
 
692
 
693
/** formulaire_envoi_passe() - Renvoie le code HTML d'un formulaire d'envoi de mot de passe par mail
694
*
695
* @return   string  HTML
696
*/
697
function inscription_formulaire_envoi_passe() {
698
    $res = '<h2>'.INS_SI_PASSE_PERDU.'</h2>'."\n" ;
699
    $res .= '<form action="'.$GLOBALS['ins_url']->getURL().'&amp;action=sendpasswd" method="post">'."\n" ;
700
    $res .= '<p class="label100">'.INS_EMAIL.' : </p>'."\n" ;
701
    $res .= '<input type="text" value="';
702
    if (isset($_POST['username'])) $res .= $_POST['username'];
703
    $res .= '" name="mail" size="32" />'."\n" ;
704
    $res .= '<input type="submit" value="'.INS_ENVOIE_PASSE.'" />' ;
705
    $res .= '</form><br />'."\n" ;
706
    $res .= inscription_AUTH_formulaire_login() ;
707
    return $res;
708
}
709
 
710
 
711
function inscription_insertion($valeur) {
712
    // ===========  Insertion dans l'annuaire ===================
713
	// Génération du nom wikini à partir du nom et du prénom
714
    if (INS_UTILISE_WIKINI && INS_NOM_WIKINI_GENERE) {
715
        $valeur['nom_wiki'] = inscription_genere_nom_wiki ($valeur['nom'], isset ($valeur['prenom']) ?  $valeur['prenom'] : '') ;
716
    } else {
717
    	if (!INS_NOM_WIKINI_GENERE)	{
718
    		$valeur['nom_wiki'] = $valeur['nomwiki'];
719
    	}
720
    }
721
    $id_utilisateur = inscription_nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']) ;
722
    $requete = 'INSERT INTO '.INS_ANNUAIRE.' SET '.
723
                INS_CHAMPS_ID.'="'.$id_utilisateur.'",'.
724
                inscription_requete_annuaire($valeur) ;
725
 
726
    $resultat = $GLOBALS['ins_db']->query($requete) ;
727
    if (DB::isError($resultat)) {
728
        die ($resultat->getMessage().$resultat->getDebugInfo()) ;
729
    }
730
 
731
    // ================ Insertion dans SPIP =========================================
732
    if (INS_UTILISE_SPIP) {
733
        inscription_spip($id_utilisateur, $valeur) ;
734
    }
735
	if (INS_UTILISE_WIKINI) inscription_interwikini_users('', $valeur) ;
736
	return $id_utilisateur ;
737
}
738
 
739
 
740
/**
741
*   Réalise une mise à jour dans la base de donnée
742
*
743
*   @param  array   un tableau de valeur avec en clé les noms des champs du formulaire
744
*   @return void
745
*/
746
function inscription_mise_a_jour($valeur, $id = '') {
747
    // ====================Mise à jour dans l'annuaire gen_annuaire ====================
748
	if ($id == '') {
749
		$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID);
750
	}
751
    $requete = 'update '.INS_ANNUAIRE.' set '.
752
                inscription_requete_annuaire ($valeur).
753
                'where '.INS_CHAMPS_ID.'="'.$id.'"';
754
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
755
    if (DB::isError($resultat)) {
756
        die ($resultat->getMessage().$resultat->getDebugInfo()) ;
757
    }
758
    unset ($resultat) ;
759
 
760
    // ========================= Mise à jour dans SPIP ================================
761
    if (INS_UTILISE_SPIP) {
762
        mod_inscription_spip($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID), $valeur) ;
763
    }
764
}
765
 
766
/** requete_annuaire () - Renvoie une chaine contenant les champs de l'annuaire avec leur valeur suite à le fonction process de QuickForm
767
*
768
* @return   string  une requete du type champs="valeur",...
769
*/
770
 
771
function inscription_requete_annuaire($valeur) {
772
    $req = INS_CHAMPS_NOM.'="'.addslashes($valeur['nom']).'", ';
773
    if (isset($valeur['est_structure']) && $valeur['est_structure'] == 0)
774
    			$req .= INS_CHAMPS_PRENOM.'="'.addslashes($valeur['prenom']).'", ';
775
    // Initialisation de variable pour éviter des notices
776
    foreach (array ('adresse_1', 'adresse_2', 'ville', 'telephone', 'fax', 'site') as $val) {
777
    	if (!isset ($valeur[$val])) $valeur[$val] = '' ;
778
    }
779
 
780
    $req .= INS_CHAMPS_MAIL.'="'.addslashes($valeur['email']).'", ' ;
781
    $req .= INS_CHAMPS_PASSE.'="'.md5($valeur['mot_de_passe']).'", '.
782
            INS_CHAMPS_PAYS.'="'.addslashes($valeur['pays']).'", '.
783
            INS_CHAMPS_ADRESSE_1.'="'.addslashes($valeur['adresse_1']).'", '.
784
            INS_CHAMPS_ADRESSE_2.'="'.addslashes($valeur['adresse_2']).'", '.
785
            INS_CHAMPS_DATE_INSCRIPTION.'=NOW(), '.
786
            INS_CHAMPS_CODE_POSTAL.'="'.addslashes($valeur['cp']).'", '.
787
			INS_CHAMPS_VILLE.'="'.addslashes($valeur['ville']).'", '.
788
			INS_CHAMPS_EST_STRUCTURE.'="'.addslashes($valeur['est_structure']).'", '.
789
			INS_CHAMPS_TELEPHONE.'="'.addslashes($valeur['telephone']).'", '.
790
			INS_CHAMPS_FAX.'="'.addslashes($valeur['fax']).'", '.
791
			INS_CHAMPS_SITE_INTERNET.'="'.addslashes($valeur['site']).'" ';
792
 
793
	if (isset($valeur['visible'])) $req .= ', '.INS_CHAMPS_VISIBLE.'="'.$valeur['visible'].'"';
794
	else $req .= ', '.INS_CHAMPS_VISIBLE.'=0';
795
 
796
	if (INS_CHAMPS_LETTRE != '') {
797
		if (isset($valeur['lettre'])) {
798
			$req .= ', '.INS_CHAMPS_LETTRE.'="'.$valeur['lettre'].'" ';
799
			inscription_lettre('inscrire');
800
		}
801
		else {
802
			$req .= ', '.INS_CHAMPS_LETTRE.'=0 ';
803
			inscription_lettre('desinscrire');
804
		}
805
	}
806
 
807
	if (isset($_FILES['image']['name']) && $_FILES['image']['name']!='') {
808
		$chemin_destination=INS_CHEMIN_APPLI.'presentations/logos/'.$_FILES['image']['name'];
809
		move_uploaded_file($_FILES['image']['tmp_name'], $chemin_destination);
810
		 $req .= ', '.INS_CHAMPS_LOGO.'="'.$_FILES['image']['name'].'"' ;
811
	}
812
 
813
	if (isset($valeur['sigle_structure'])) {
814
        $req .= ', '.INS_CHAMPS_SIGLE_STRUCTURE.'="'.addslashes($valeur['sigle_structure']).'"' ;
815
    }
816
    if (isset($valeur['num_agrement'])) {
817
        $req .= ', '.INS_CHAMPS_NUM_AGREMENT.'="'.addslashes($valeur['num_agrement']).'"' ;
818
    }
819
    // traitement du numéro de département pour la france
820
    if ($valeur['pays'] == 'FR') {
821
        if (preg_match("/^97|98[0-9]*/", $valeur['cp'])) {
822
            $n_dpt = substr($valeur['cp'], 0, 3) ;
823
        } else {
824
            $n_dpt = substr($valeur['cp'], 0, 2) ;
825
        }
826
        $req .= ",".INS_CHAMPS_DEPARTEMENT."='$n_dpt'";
827
    }
828
 
829
    if (INS_UTILISE_WIKINI && isset ($valeur['nom_wiki'])) $req .= ','.INS_CHAMPS_NOM_WIKINI.'="'.$valeur['nom_wiki'].'"';
830
    return $req ;
831
}
832
 
833
 
834
 
835
/** formulaire_defaults() - Renvoie un tableau avec les valeurs par défaut du formulaire d'inscription
836
*
837
* @return   array   Valeurs par défaut du formulaire d'inscription
838
*/
839
function inscription_formulaire_defaults($id = '') {
840
	if ($id == '') {
841
			$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID);
842
	}
843
    $requete = 'select '.INS_ANNUAIRE.'.* '.
844
                'from '.INS_ANNUAIRE.' '.
845
                'where '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$id.'"' ;
846
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
847
    if (DB::isError($resultat)) {
848
    	die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
849
    }
850
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
851
    $valeurs_par_defaut = array() ;
852
    $valeurs_par_defaut['email'] = $ligne[INS_CHAMPS_MAIL];
853
    $valeurs_par_defaut['nom'] = $ligne[INS_CHAMPS_NOM];
854
    $valeurs_par_defaut['prenom'] = $ligne[INS_CHAMPS_PRENOM] ;
855
    $valeurs_par_defaut['pays'] = $ligne[INS_CHAMPS_PAYS] ;
856
    if (INS_UTILISE_WIKINI) {$valeurs_par_defaut['nomwiki'] = $ligne[INS_CHAMPS_NOM_WIKINI] ;}
857
    $valeurs_par_defaut['cp'] = $ligne[INS_CHAMPS_CODE_POSTAL] ;
858
    $valeurs_par_defaut['ville'] = $ligne[INS_CHAMPS_VILLE] ;
859
    $valeurs_par_defaut['adresse_1'] = $ligne[INS_CHAMPS_ADRESSE_1] ;
860
    $valeurs_par_defaut['adresse_2'] = $ligne[INS_CHAMPS_ADRESSE_2] ;
861
    $valeurs_par_defaut['telephone'] = $ligne[INS_CHAMPS_TELEPHONE] ;
862
    $valeurs_par_defaut['fax'] = $ligne[INS_CHAMPS_FAX] ;
863
    if (INS_CHAMPS_STRUCTURE != '' && isset($ligne[INS_CHAMPS_STRUCTURE])) {
864
    	$valeurs_par_defaut['structure'] = $ligne[INS_CHAMPS_STRUCTURE] ;
865
    	//$valeurs_par_defaut['type_structure'] = $ligne['a_type_structure'];
866
    }
867
    $valeurs_par_defaut['site'] = $ligne[INS_CHAMPS_SITE_INTERNET] ;
868
    $valeurs_par_defaut['lettre'] = $ligne[INS_CHAMPS_LETTRE] ;
869
    $valeurs_par_defaut['visible'] = $ligne[INS_CHAMPS_VISIBLE] ;
870
    $valeurs_par_defaut['sigle_structure'] = $ligne[INS_CHAMPS_SIGLE_STRUCTURE] ;
871
    if (INS_CHAMPS_NUM_AGREMENT != '') $valeurs_par_defaut['num_agrement'] = $ligne[INS_CHAMPS_NUM_AGREMENT] ;
872
    return $valeurs_par_defaut ;
873
}
874
 
875
 
876
/** info() - Renvoie une fiche d'information sur la personne ou la structure
877
*
878
* @param  integer  identifiant de la fiche a afficher, mettre -1 pour voir sa propre fiche
879
* @param  text     nom de l'onglet de la fiche
880
*
881
* @return   text   Code HTML de la fiche
882
*/
883
function info($id=-1, $type_info='fiche') {
884
	if ($id==-1) $id=$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID);
885
    $requete = 'SELECT * FROM '.INS_ANNUAIRE.' WHERE '.INS_ANNUAIRE.'.'
886
               .INS_CHAMPS_ID.'="'.$id.'"' ;
887
    $resultat = $GLOBALS['ins_db'] -> query($requete) ;
888
    if (DB::isError($resultat)) {
889
    	die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
890
    }
891
 
892
    $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
893
 
894
    //voir la présentation de la fiche
895
    if ($type_info=='fiche') {
896
    	$res = '';
897
 
898
	    if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) {
899
	    	$res .= '<h2>'.INS_FICHE_STRUCTURE.'</h2>'."\n" ;
900
	    } else {
901
	    	$res .= '<h2>'.INS_FICHE_PERSONNELLE.'</h2>'."\n" ;
902
	    }
903
	    $res .= '<div class="fiche">'."\n" ;
904
	    if ($ligne[INS_CHAMPS_LOGO] != NULL) {
905
    		$res .= '<img style="float:right;width:120px;height:120px;margin:0 0 10px 10px;" src="'.INS_CHEMIN_APPLI.'presentations/logos/'.$ligne[INS_CHAMPS_LOGO].'" alt="logo" />'."\n";
906
    	}
907
	    if ($ligne[INS_CHAMPS_EST_STRUCTURE] == 1) {
908
	    	$res .= '<h3>'.$ligne[INS_CHAMPS_NOM].'</h3>'."\n";
909
		    $res .= inscription_ligne(INS_SIGLE_DE_LA_STRUCTURE, $ligne[INS_CHAMPS_SIGLE_STRUCTURE]) ;
910
		    if (INS_CHAMPS_NUM_AGREMENT != '') $res .= inscription_ligne(INS_NUM_AGREMENT, $ligne[INS_CHAMPS_NUM_AGREMENT]) ;
911
	    } else {
912
	    	$res .= '<h3>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h3>'."\n";
913
	    }
914
 
915
	    $res .= inscription_ligne(INS_ADRESSE_1, $ligne[INS_CHAMPS_ADRESSE_1]) ;
916
	    $res .= inscription_ligne(INS_ADRESSE_2, $ligne[INS_CHAMPS_ADRESSE_2]) ;
917
	    $res .= inscription_ligne(INS_CODE_POSTAL, $ligne[INS_CHAMPS_CODE_POSTAL]) ;
918
	    $res .= inscription_ligne(INS_VILLE, $ligne[INS_CHAMPS_VILLE]) ;
919
	    $pays = new ListeDePays($GLOBALS['ins_db']) ;
920
	    $res .= inscription_ligne(INS_PAYS, $pays->getNomPays($ligne[INS_CHAMPS_PAYS], INS_LANGUE_DEFAUT)) ;
921
	    $res .= inscription_ligne(INS_TELEPHONE, $ligne[INS_CHAMPS_TELEPHONE]) ;
922
	    $res .= inscription_ligne(INS_FAX, $ligne[INS_CHAMPS_FAX]) ;
923
 
924
	    if ($ligne[INS_CHAMPS_SITE_INTERNET]!='') {
925
	    	$res .= inscription_ligne(INS_SITE_INTERNET, '<a href="'.$ligne[INS_CHAMPS_SITE_INTERNET].'" onclick="javascript:window.open(this.href);return false;">'.$ligne[INS_CHAMPS_SITE_INTERNET].'</a>');
926
	    }
927
 
928
	    if ($GLOBALS['AUTH']->getAuth()) $res .= inscription_ligne(INS_EMAIL, '<a href="mailto:'.$ligne[INS_CHAMPS_MAIL].'">'.$ligne[INS_CHAMPS_MAIL].'</a>');
929
	    else $res .= '<br /><p class="zone_info">'.INS_PAS_IDENTIFIE.'</p>'."\n";
930
 
931
	    if (INS_UTILISE_WIKINI) {
932
			$res .= inscription_ligne (INS_NOM_WIKI, $ligne[INS_CHAMPS_NOM_WIKINI])."\n" ;
933
		}
934
 
935
	    $res .= '</ul>'."\n";
936
	    if ($id==$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)) {
937
		    $res .= '<ul style="margin-top:10px; clear:both;">'."\n";
938
		    if ($ligne[INS_CHAMPS_VISIBLE] == 1) {
939
		    	$res .= '<li>'.INS_VOUS_APPARAISSEZ.'</li>'."\n";
940
		    } else $res .= '<li>'.INS_VOUS_APPARAISSEZ_PAS.'</li>'."\n";
941
		    if (INS_CHAMPS_LETTRE != '') {
942
		    		if ($ligne[INS_CHAMPS_LETTRE] == 1) {
943
		    			$res .= '<li>'.INS_VOUS_RECEVEZ_LETTRE.'</li>'."\n";
944
		    		} else $res .= '<li>'.INS_VOUS_RECEVEZ_PAS_LETTRE.'</li>'."\n";
945
		    }
946
		    $res .= '</ul>'."\n";
947
 
948
		    $res .= '<ul style="margin:15px;">'."\n";;
949
		    $res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&amp;action=modifier&amp;form_structure='.$ligne[INS_CHAMPS_EST_STRUCTURE].'">'.INS_MODIFIER_INSCRIPTION.'</a></li>'."\n" ;
950
		    $res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&amp;action=supprimer&amp;form_structure='.$ligne[INS_CHAMPS_EST_STRUCTURE].'" onclick="javascript:return confirm(\''.INS_SUPPRIMER_INSCRIPTION.'?\');">'.INS_SUPPRIMER_INSCRIPTION.'</a></li>'."\n" ;
951
		    $res .= '<li><a href="'.$GLOBALS['ins_url']->getURL().'&amp;action=deconnexion">'.INS_DECONNEXION.'</a></li>'."\n" ;
952
		    $res .= '</ul>'."\n";
953
		    $res .= '</div>'."\n"; //div fiche
954
	    }
955
 
956
	//voir les abonnements presents dans les applis clientes
957
    } elseif ($type_info=='abonnement') {
958
    	$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n";
959
    	$res .= '<h2>'.INS_GESTION_DES_ABONNEMENTS.'</h2>'."\n" ;
960
 
961
    	// Appel des actions d'abonnement des applications clientes
962
        $d = dir(GEN_CHEMIN_CLIENT);
963
        $abonnement='';
964
        $abonnements='';
965
		while (false !== ($repertoire = $d->read())) {
966
			if (file_exists(GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.'bibliotheque'.GEN_SEP.$repertoire.'.abonnement.inc.php')) {
967
				require_once GEN_CHEMIN_CLIENT.$repertoire.GEN_SEP.'bibliotheque'.GEN_SEP.$repertoire.'.abonnement.inc.php' ;
968
				$abonnements .= $abonnement;
969
			}
970
		}
971
		$d->close();
972
		$res .= $abonnements;
973
 
974
    //voir les actus
975
    } elseif ($type_info=='actus') {
976
    	$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n";
977
    	$res .= '<h2>'.INS_ACTUALITES_DEPOSEES.'</h2>'."\n" ;
978
    	require_once GEN_CHEMIN_CLIENT.'bazar'.GEN_SEP.'configuration'.GEN_SEP.'baz_config.inc.php';
979
    	require_once GEN_CHEMIN_CLIENT.'bazar'.GEN_SEP.'bibliotheque'.GEN_SEP.'bazar.fonct.rss.php';
980
    	$_GET['action']=1;
981
    	$res .= RSSversHTML(gen_RSS('', '', $id, 1, ''), 0, 'jma', 0);
982
 
983
	//voir les ressources
984
    } elseif ($type_info=='ressources') {
985
    	$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n";
986
    	$res .= '<h2>'.INS_RESSOURCES_ASSOCIEES.'</h2>'."\n" ;
987
    	$requete = 'SELECT bf_id_fiche, bf_titre FROM bazar_fiche, bazar_appropriation WHERE  ba_ce_id_fiche=bf_id_fiche AND ba_ce_id_structure='.$id ;
988
    	$resultat = $GLOBALS['ins_db'] -> query($requete) ;
989
    	$res .= '<ul>'."\n";
990
    	while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
991
			$res .= '<li><a href="'.INS_URL_BAZAR.'&amp;action=8&amp;id_fiche='.$ligne['bf_id_fiche'].'" onclick="window.open(this.href,\'_blank\');return false;">'.$ligne['bf_titre'].'</a></li>'."\n";
992
		}
993
		$res .= '</ul><br />'."\n";
994
 
995
    //voir les competences
996
    } elseif ($type_info=='competences') {
997
    	$res = '<h1>'.$ligne[INS_CHAMPS_PRENOM].' '.$ligne[INS_CHAMPS_NOM].'</h1>'."\n";
998
    	$res .= '<h2>'.INS_COMPETENCES_ASSOCIEES.'</h2>'."\n" ;
999
    }
1000
    return $res ;
1001
}
1002
 
1003
 
1004
/**	inscription_ligne() - Renvoie une ligne avec label et valeur
1005
 *
1006
 * @param string label Le label
1007
 * @param string valeur
1008
 * @return	string HTML
1009
 */
1010
function inscription_ligne($label, $valeur) {
1011
    if ($valeur == '') {
1012
        return;
1013
    }
1014
    if (($label == '')or($label == '&nbsp;')) {
1015
    	return '<div class="inscription_infos">'.$valeur.'</div>'."\n";
1016
    } else {
1017
    	return '<div class="inscription_infos"><strong class="inscription_label">'."\n".$label.' : </strong>'.$valeur.'</div>'."\n";
1018
    }
1019
}
1020
 
1021
 
1022
/** Renvoie vrai si l'email passé en paramètre n'est pas déjà dans l'annuaire
1023
*   ou si, en cas de modification d'inscription, l'inscrit ne modifie pas son email
1024
*
1025
*   @return boolean
1026
*/
1027
function inscription_verif_doublonMail($mail, $id = '') {
1028
	if ($id == '') {
1029
		if (isset ($GLOBALS['AUTH'])) {
1030
			$id = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
1031
		}
1032
	}
1033
    if (isset ($id) && $id != '') {
1034
        $requete_mail = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".
1035
        				INS_CHAMPS_ID."=".$id ;
1036
        $resultat_mail = $GLOBALS['ins_db']->query ($requete_mail) ;
1037
        if (DB::isError ($resultat_mail)) {
1038
            die ("Echec de la requete : $requete_mail<br />".$resultat_mail->getMessage()) ;
1039
        }
1040
        $ligne_mail = $resultat_mail->fetchRow(DB_FETCHMODE_ASSOC) ;
1041
        if ($mail == $ligne_mail[INS_CHAMPS_MAIL]) {
1042
            return true ;
1043
        }
1044
    }
1045
    $requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_MAIL."= \"$mail\"" ;
1046
    $resultat = $GLOBALS['ins_db']->query ($requete) ;
1047
    if (DB::isError ($resultat)) {
1048
    	die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
1049
    }
1050
    if ($resultat->numRows() == 0) return true ;
1051
    return false ;
1052
}
1053
 
1054
 
1055
function inscription_envoie_passe() {
1056
	$res='';
1057
	$requete = 'SELECT '.INS_CHAMPS_MAIL.' FROM '.INS_ANNUAIRE.' WHERE '.INS_CHAMPS_MAIL.'="'.$_POST['mail'].'"' ;
1058
    $resultat = $GLOBALS['ins_db']->query($requete) ;
1059
    if (DB::isError($resultat)) {
1060
        die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
1061
    }
1062
    if ($resultat->numRows() == 0) {
1063
    	$res .= '<p class="erreur">'.INS_MAIL_INCONNU_DANS_ANNUAIRE.'</p>'."\n" ;
1064
    } else {
1065
    	include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ;
1066
    	$mail = & Mail::factory('smtp') ;
1067
    	$headers ['Return-Path'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ;
1068
    	$headers ['From'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ;
1069
    	$headers ['Subject'] = INS_MOT_DE_PASSE_CHANGE ;
1070
    	$headers ['Reply-To'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ;
1071
    	$headers ['To'] = "<".$_POST['mail'].">" ;
1072
    	$nouveau_passe = create_new_random(6) ;
1073
    	// modification du mot de passe dans la base
1074
    	$requete = 'UPDATE '.INS_ANNUAIRE.' SET '.INS_CHAMPS_PASSE.'=MD5("'.$nouveau_passe.'") WHERE '.INS_CHAMPS_MAIL.'="'.$_POST['mail'].'"' ;
1075
    	$resultat = $GLOBALS['ins_db']->query($requete) ;
1076
    	if (DB::isError($resultat)) {
1077
    		die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
1078
    	}
1079
    	$body = INS_NOUVEAU_MOT_DE_PASSE_2.$nouveau_passe ;
1080
    	$body .= INS_NOUVEAU_MOT_DE_PASSE_LAIUS ;
1081
    	$mail->send($_POST['mail'], $headers, $body) ;
1082
    	if (PEAR::isError($mail)) {
1083
    		$res .= '<p class="erreur">'.INS_PROBLEME_ENVOI_MAIL.'</p>'."\n" ;
1084
    		return $res ;
1085
    	}
1086
    	$res .= '<p class="info">'.INS_NOUVEAU_MOT_DE_PASSE_ENVOYE.'</p>'."\n" ;
1087
    }
1088
    return $res ;
1089
}
1090
 
1091
/**
1092
 *  Inscrit un adhérent à la lettre d'actualité par l'envoie d'un email subscribe / unsubscribe
1093
 *  à la liste
1094
 *
1095
 * @global  AUTH    Un objet PEAR::Auth
1096
 * @return  boolean true en cas de succès
1097
 */
1098
 
1099
function inscription_lettre($action) {
1100
    include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ;
1101
    $mail = & Mail::factory ('smtp') ;
1102
    $email = $GLOBALS['AUTH']->getUsername() ;
1103
    $headers ['Return-Path'] = $email ;
1104
    $headers ['From'] = "<".$email.">" ;
1105
    $headers ['Subject'] = $action ;
1106
    $headers ['Reply-To'] = $email ;
1107
 
1108
    $mail -> send ($action, $headers, "") ;
1109
    if (PEAR::isError ($mail)) {
1110
        echo '<p class="erreur">Le mail n\'est pas parti...</p>' ;
1111
        return false ;
1112
    }
1113
    return true ;
1114
}
1115
 
1116
/**
1117
 *
1118
 * @global  ins_db  Un pointeur vers un objet PEAR::DB connecté
1119
 * @return
1120
 */
1121
 
1122
function inscription_envoie_mail() //A COMPLETER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1123
{
1124
    include_once PAP_CHEMIN_RACINE.'api/pear/Mail/mime.php' ;
1125
    include_once PAP_CHEMIN_RACINE.'api/pear/Mail.php' ;
1126
    $crlf="\n";
1127
 
1128
    $headers ['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
1129
    $headers ['Subject'] = INS_MAIL_COORD_SUJET ;
1130
    $headers ['Reply-To'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
1131
 
1132
    $mime = new Mail_mime($crlf);
1133
 
1134
    $requete = "select *, ".INS_CHAMPS_LABEL_PAYS." from ".INS_ANNUAIRE.",".INS_TABLE_PAYS.
1135
            " where ".INS_CHAMPS_MAIL."=\"".$GLOBALS['AUTH']->getUsername()."\"".
1136
            " and ".INS_CHAMPS_ID_PAYS."=".INS_CHAMPS_PAYS;
1137
 
1138
    $resultat = $GLOBALS['ins_db']->query($requete) ;
1139
    if (DB::isError ($resultat)) {
1140
        die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
1141
    }
1142
    $ligne  = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
1143
    $body_entete = INS_MAIL_COORD_CORPS."\n" ;
1144
    $body = "mail : ".$ligne[INS_CHAMPS_MAIL]."\n" ;
1145
    $body .= "------------------------------------------\n";
1146
    $body .= INS_NOM.": ".unhtmlentities($ligne[INS_CHAMPS_NOM])." \n" ;
1147
    $body .= INS_PRENOM.' : '.unhtmlentities($ligne[INS_CHAMPS_PRENOM])." \n" ;
1148
    $body .= INS_PAYS." : ".unhtmlentities($ligne[INS_CHAMPS_LABEL_PAYS])." \n" ;
1149
    $body .= "-------------------------------------------\n" ;
1150
 
1151
    $mime->setTXTBody($body);
1152
    $mime->setHTMLBody(info()) ;
1153
 
1154
    $body = $mime->get();
1155
    $headers = $mime->headers($headers);
1156
 
1157
    $mail = & Mail::factory('mail') ;
1158
 
1159
    $mail -> send ($ligne[INS_CHAMPS_MAIL], $headers, $body) ;
1160
 
1161
        // Envoi du mail aux administrateur du site
1162
    foreach ($GLOBALS['mail_admin'] as $administrateur) {
1163
        $mail -> send ($administrateur, $headers, $body) ;
1164
    }
1165
    if (PEAR::isError($mail)) {
1166
        echo 'erreur d\'envoi' ;
1167
        return false ;
1168
    }
1169
    return true ;
1170
}
1171
 
1172
 
1173
/**
1174
 *  Génère un nom wiki valide à partir des données saisies par l'utilisateur
1175
 *  fait une requete dans la base
1176
 *
1177
 * @return  string un nom wiki valide
1178
 */
1179
 
1180
function inscription_genere_nom_wiki($prenom, $nom) {
1181
    // 1. suppression des espaces
1182
    $nom = trim ($nom) ;
1183
    $prenom = trim ($prenom) ;
1184
 
1185
    // 2. suppression des caractères non ascii et ajout de la première lettre en majuscule
1186
    $nom = inscription_trim_non_ascii ($nom) ;
1187
    $prenom = inscription_trim_non_ascii ($prenom) ;
1188
 
1189
    // Vérification
1190
    $nom_wiki = $prenom.$nom ;
1191
    if (!preg_match('/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/', $nom_wiki)) {
1192
        $nom_wiki = chr(rand(65, 90)).$nom_wiki.chr(rand(65, 90)) ;
1193
    }
1194
    return $nom_wiki ;
1195
}
1196
 
1197
/**
1198
 *	Cette fonction supprime les caractères autres que asccii et les chiffres
1199
 *
1200
 * @return	string la chaine épurée
1201
 */
1202
 
1203
function inscription_trim_non_ascii ($nom) {
1204
    $premiere_lettre = true ;
1205
    for ($i = 0; $i < strlen ($nom); $i++) {
1206
        if (!preg_match ('/[a-zA-Z0-9]/', $nom[$i])) {
1207
            $nom[$i] = '_' ;
1208
        }
1209
    // remplacement de la première lettre en majuscule
1210
        if (preg_match ('/[a-zA-Z]/', $nom[$i]) && $premiere_lettre) {
1211
            $nom[$i] = strtoupper ($nom[$i]) ;
1212
            $premiere_lettre = false ;
1213
        } else {
1214
            if (preg_match ('/[a-zA-Z]/', $nom[$i])) {
1215
                $nom[$i] = strtolower ($nom[$i]) ;
1216
            }
1217
        }
1218
    }
1219
    $nom = preg_replace ('/_/', '', $nom) ;
1220
    return $nom ;
1221
}
1222
 
1223
// For users prior to PHP 4.3.0 you may do this:
1224
//function unhtmlentities($string)
1225
//{
1226
//    $trans_tbl = array_flip ($trans_tbl);
1227
//    return strtr ($string, $trans_tbl);
1228
//}
1229
 
1230
//==============================================================================
1231
/** function create_new_random($n,$type) permet de générer un nombre de caractères aléatoires.
1232
*
1233
*
1234
*
1235
*  ENTREE :
1236
*  - $n : créer un 'mot' de $n caractères
1237
*  - $type : permet de définir la liste des caractères disponibles
1238
*
1239
*  SORTIE : chaine de $n caractères pris dans une liste $type
1240
*/
1241
function create_new_random($n,$type="")
1242
{
1243
    $str = "";
1244
 
1245
    switch ($type){
1246
        default:{
1247
            $chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
1248
        }
1249
            break;
1250
    }
1251
 
1252
    srand((double)microtime()*1000000);
1253
    for($i = 0; $i < $n; $i++){
1254
        $str .= $chaine[rand()%strlen($chaine)];
1255
    }
1256
 
1257
    return "$str";
1258
}
1259
 
1260
//==============================================================================
1261
/** function nextId () Renvoie le prochain identifiant numérique libre d'une table
1262
*
1263
*   On passe en paramètre le nom de la table et l'identifiant de la base selon PEAR DB
1264
*
1265
*   @param  mixed   handler de connexion
1266
*   @param  string  Nom de la table
1267
*   return  interger    l'identifiant
1268
*/
1269
function inscription_nextId($table, $colonne_identifiant)
1270
{
1271
    $requete = 'select MAX('.$colonne_identifiant.') as maxi from '.$table ;
1272
    $resultat = $GLOBALS['ins_db']->query($requete) ;
1273
    if (DB::isError($resultat)) {
1274
        die (__FILE__ . __LINE__ . $resultat->getMessage() . $requete);
1275
        return $GLOBALS['ins_db']->raiseError($resultat) ;
1276
    }
1277
 
1278
    if ($resultat->numRows() > 1) {
1279
        return $GLOBALS['ins_db']->raiseError("<br />La table $table a un identifiant non unique<br/>") ;
1280
    }
1281
    $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
1282
    return $ligne->maxi + 1 ;
1283
}
1284
 
1285
 
810 florian 1286
//-- Fin du code source    ------------------------------------------------------------
1287
/*
1288
* $Log$
1298 neiluj 1289
* Revision 1.8.2.1  2007/01/26 10:28:43  alexandre_tb
1290
* correction d un notice
1291
*
1292
* Revision 1.8  2006/12/01 13:23:15  florian
1293
* integration annuaire backoffice
1294
*
1295
* Revision 1.7  2006/10/05 13:53:54  florian
1296
* amélioration des fichiers sql
1297
*
979 florian 1298
* Revision 1.6  2006/09/13 12:31:18  florian
1299
* ménage: fichier de config Papyrus, fichiers temporaires
1300
*
933 florian 1301
* Revision 1.5  2006/04/28 12:44:05  florian
1302
* integration bazar
1303
*
833 florian 1304
* Revision 1.4  2006/04/11 08:39:52  alexandre_tb
1305
* correction de l'envoie de mail par la carto
1306
*
814 alexandre_ 1307
* Revision 1.3  2006/04/10 14:21:51  florian
1308
* correction bug affichage formulaire de mail en double
1309
*
812 florian 1310
* Revision 1.2  2006/04/10 14:15:10  florian
1311
* les cases à cocher apparaissent à nouveau
1312
*
811 florian 1313
* Revision 1.1  2006/04/10 14:01:36  florian
1314
* uniformisation de l'appli bottin: plus qu'un fichier de fonctions
810 florian 1315
*
811 florian 1316
*
810 florian 1317
*/
1318
?>