Subversion Repositories Sites.tela-botanica.org

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7 david 1
<?php
2
 
3
/***************************************************************************\
4
 *  SPIP, Systeme de publication pour l'internet                           *
5
 *                                                                         *
6
 *  Copyright (c) 2001-2005                                                *
7
 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8
 *                                                                         *
9
 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10
 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11
\***************************************************************************/
12
 
13
 
14
include ("inc.php3");
15
include_ecrire ("inc_acces.php3");
16
include_ecrire ("inc_logos.php3");
17
include_ecrire ("inc_session.php3");
18
include_ecrire ("inc_filtres.php3");
19
include_ecrire ("inc_abstract_sql.php3");
20
 
21
// securite
22
$id_auteur = floor($id_auteur);
23
 
24
 
25
//
26
// Auteurs a acces restreint
27
//
28
function afficher_auteur_rubriques($leparent){
29
	global $id_parent;
30
	global $id_rubrique;
31
	global $toutes_rubriques;
32
	global $i;
33
 
34
	$i++;
35
 	$query="SELECT * FROM spip_rubriques WHERE id_parent=$leparent ORDER BY 0+titre, titre";
36
 	$result=spip_query($query);
37
 
38
	while($row=spip_fetch_array($result)){
39
		$my_rubrique=$row['id_rubrique'];
40
		$titre=typo($row['titre']);
41
 
42
		if (!ereg(",$my_rubrique,","$toutes_rubriques")){
43
			$espace = str_repeat("&nbsp", $i*2) . "|";
44
			if ($i==1)
45
				$espace = "*";
46
 
47
			echo "<OPTION VALUE='$my_rubrique'>$espace ".supprimer_tags($titre)."\n";
48
			afficher_auteur_rubriques($my_rubrique);
49
		}
50
	}
51
	$i=$i-1;
52
}
53
 
54
// securite
55
if ($connect_statut != "0minirezo" AND $connect_id_auteur != $id_auteur) {
56
	gros_titre(_T('info_acces_interdit'));
57
	exit;
58
}
59
 
60
//
61
// Recuperer l'auteur (id_auteur) ... ou l'inventer
62
//
63
unset($auteur);
64
 
65
if ($id_auteur) {
66
	$auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"));
67
	$new = false;	// eviter hack
68
} else {
69
	if (!$auteur['nom'] = $titre) {
70
		$auteur['nom'] = filtrer_entites(_T('item_nouvel_auteur'));
71
		$onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
72
	}
73
	$auteur['statut'] = '1comite'; // statut par defaut a la creation
74
	$auteur['source'] = 'spip';
75
}
76
 
77
 
78
//
79
// Modification (et creation si besoin)
80
//
81
if ($nom) { // si on poste un nom, c'est qu'on modifie une fiche auteur
82
	$auteur['nom'] = corriger_caracteres($nom);
83
 
84
	// login et mot de passe
85
	unset ($modif_login);
86
	$old_login = $auteur['login'];
87
	if (($new_login<>$old_login) AND $connect_statut == '0minirezo' AND $connect_toutes_rubriques AND $auteur['source'] == 'spip') {
88
		if ($new_login) {
89
			if (strlen($new_login) < 4)
90
				$echec .= "<p>"._T('info_login_trop_court');
91
			else if (spip_num_rows(spip_query("SELECT * FROM spip_auteurs WHERE login='".addslashes($new_login)."' AND id_auteur!=$id_auteur AND statut!='5poubelle'")))
92
				$echec .= "<p>"._T('info_login_existant');
93
			else if ($new_login != $old_login) {
94
				$modif_login = true;
95
				$auteur['login'] = $new_login;
96
			}
97
		}
98
		// suppression du login
99
		else {
100
			$auteur['login'] = '';
101
			$modif_login = true;
102
		}
103
	}
104
 
105
	// changement de pass, a securiser en jaja ?
106
	if ($new_pass AND ($statut != '5poubelle') AND $auteur['login'] AND $auteur['source'] == 'spip') {
107
		if ($new_pass != $new_pass2)
108
			$echec .= "<p>"._T('info_passes_identiques');
109
		else if ($new_pass AND strlen($new_pass) < 6)
110
			$echec .= "<p>"._T('info_passe_trop_court');
111
		else {
112
			$modif_login = true;
113
			$auteur['new_pass'] = $new_pass;
114
		}
115
	}
116
 
117
	if ($modif_login) {
118
		include_ecrire('inc_session.php3');
119
		zap_sessions ($auteur['id_auteur'], true);
120
		if ($connect_id_auteur == $auteur['id_auteur'])
121
			supprimer_session($GLOBALS['spip_session']);
122
	}
123
 
124
	// email
125
	// seuls les admins peuvent modifier l'email
126
	// les admins restreints peuvent modifier l'email des redacteurs
127
	// mais pas des autres admins
128
	if ($connect_statut == '0minirezo'
129
	AND ($connect_toutes_rubriques OR $statut<>'0minirezo')) {
130
		if ($email !='' AND !email_valide($email)) {
131
			$echec .= "<p>"._T('info_email_invalide');
132
			$auteur['email'] = $email;
133
		} else
134
			$auteur['email'] = $email;
135
	}
136
 
137
	if ($connect_id_auteur == $id_auteur) {
138
		if ($perso_activer_imessage) {
139
			$query = "UPDATE spip_auteurs SET imessage='$perso_activer_imessage' WHERE id_auteur=$id_auteur";
140
			$result = spip_query($query);
141
			$auteur['imessage'] = $perso_activer_imessage;
142
		}
143
	}
144
 
145
	// variables sans probleme
146
	$auteur['bio'] = corriger_caracteres($bio);
147
	$auteur['pgp'] = corriger_caracteres($pgp);
148
	$auteur['nom_site'] = corriger_caracteres($nom_site_auteur); // attention mix avec $nom_site_spip ;(
149
	$auteur['url_site'] = vider_url($url_site);
150
 
151
	if ($new_pass) {
152
		$htpass = generer_htpass($new_pass);
153
		$alea_actuel = creer_uniqid();
154
		$alea_futur = creer_uniqid();
155
		$pass = md5($alea_actuel.$new_pass);
156
		$query_pass = " pass='$pass', htpass='$htpass', alea_actuel='$alea_actuel', alea_futur='$alea_futur', ";
157
		if ($auteur['id_auteur'])
158
		  effacer_low_sec($auteur['id_auteur']);
159
	} else
160
		$query_pass = '';
161
 
162
	// recoller les champs du extra
163
	if ($champs_extra) {
164
		include_ecrire("inc_extra.php3");
165
		$extra = extra_recup_saisie("auteurs");
166
		$add_extra = ", extra = '".addslashes($extra)."'";
167
	} else
168
		$add_extra = '';
169
 
170
	// l'entrer dans la base
171
	if (!$echec) {
172
		if (!$auteur['id_auteur']) { // creation si pas d'id
173
		  $auteur['id_auteur'] = spip_abstract_insert("spip_auteurs", "(nom)", "('temp')");
174
 
175
			$id_auteur = $auteur['id_auteur'];
176
 
177
			if ($ajouter_id_article = intval($ajouter_id_article))
178
				spip_query("INSERT INTO spip_auteurs_articles (id_auteur, id_article) VALUES ($id_auteur, $ajouter_id_article)");
179
		}
180
 
181
		$query = "UPDATE spip_auteurs SET $query_pass
182
			nom='".addslashes($auteur['nom'])."',
183
			login='".addslashes($auteur['login'])."',
184
			bio='".addslashes($auteur['bio'])."',
185
			email='".addslashes($auteur['email'])."',
186
			nom_site='".addslashes($auteur['nom_site'])."',
187
			url_site='".addslashes($auteur['url_site'])."',
188
			pgp='".addslashes($auteur['pgp'])."'
189
			$add_extra
190
			WHERE id_auteur=".$auteur['id_auteur'];
191
		spip_query($query) OR die($query);
192
	}
193
}
194
 
195
// Appliquer des modifications de statut
196
modifier_statut_auteur($auteur, $_POST['statut'], $_POST['add_rub'], $_GET['supp_rub']);
197
 
198
 
199
// Si on modifie la fiche auteur, reindexer et modifier htpasswd
200
if ($nom OR $statut) {
201
	if (lire_meta('activer_moteur') == 'oui') {
202
		include_ecrire ("inc_index.php3");
203
		marquer_indexer('auteur', $id_auteur);
204
	}
205
 
206
	// Mettre a jour les fichiers .htpasswd et .htpasswd-admin
207
	ecrire_acces();
208
}
209
 
210
// Redirection
211
if (!$echec AND $redirect_ok == "oui") {
212
	redirige_par_entete($redirect ? rawurldecode($redirect) : "auteurs_edit.php3?id_auteur=$id_auteur");
213
}
214
 
215
 
216
//
217
// Affichage
218
//
219
 
220
if ($connect_id_auteur == $id_auteur)
221
	debut_page($auteur['nom'], "auteurs", "perso");
222
else
223
	debut_page($auteur['nom'],"auteurs","redacteurs");
224
 
225
echo "<br><br><br>";
226
 
227
debut_gauche();
228
 
229
if ($id_auteur) {
230
	debut_boite_info();
231
	echo "<CENTER>";
232
	echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_cadre_numero_auteur')."&nbsp;:</B></FONT>";
233
	echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_auteur</B></FONT>";
234
	echo "</CENTER>";
235
	fin_boite_info();
236
}
237
 
238
debut_droite();
239
 
240
 
241
//
242
// Formulaire d'edition de l'auteur
243
//
244
 
245
if ($echec){
246
	debut_cadre_relief();
247
	echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='left'");
248
	echo "<font color='red'>$echec <p>"._T('info_recommencer')."</font>";
249
	fin_cadre_relief();
250
	echo "<p>";
251
}
252
 
253
 
254
debut_cadre_formulaire();
255
echo "<FORM ACTION='auteur_infos.php3?id_auteur=$id_auteur' METHOD='post'>";
256
echo "<INPUT TYPE='Hidden' NAME='id_auteur' VALUE=\"$id_auteur\">";
257
 
258
 
259
//
260
// Infos personnelles
261
//
262
 
263
echo "<div class='serif'>";
264
 
265
debut_cadre_relief("fiche-perso-24.gif", false, "", _T("icone_informations_personnelles"));
266
 
267
echo _T('titre_cadre_signature_obligatoire');
268
echo "("._T('entree_nom_pseudo').")<BR>";
269
echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"".entites_html($auteur['nom'])."\" SIZE='40' $onfocus><P>";
270
 
271
echo "<B>"._T('entree_adresse_email')."</B>";
272
 
273
if ($connect_statut == "0minirezo"
274
AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo')) {
275
	echo "<br><INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"".entites_html($auteur['email'])."\" SIZE='40'><P>\n";
276
}
277
else {
278
	echo "&nbsp;: <tt>".$auteur['email']."</tt>";
279
	echo "<br>("._T('info_reserve_admin').")\n";
280
	echo "<P>";
281
}
282
 
283
echo "<B>"._T('entree_infos_perso')."</B><BR>";
284
echo "("._T('entree_biographie').")<BR>";
285
echo "<TEXTAREA NAME='bio' CLASS='forml' ROWS='4' COLS='40' wrap=soft>";
286
echo entites_html($auteur['bio']);
287
echo "</TEXTAREA>\n";
288
 
289
debut_cadre_enfonce("site-24.gif", false, "", _T('info_site_web'));
290
echo "<B>"._T('entree_nom_site')."</B><BR>";
291
echo "<INPUT TYPE='text' NAME='nom_site_auteur' CLASS='forml' VALUE=\"".entites_html($auteur['nom_site'])."\" SIZE='40'><P>\n";
292
 
293
echo "<B>"._T('entree_url')."</B><BR>";
294
echo "<INPUT TYPE='text' NAME='url_site' CLASS='forml' VALUE=\"".entites_html($auteur['url_site'])."\" SIZE='40'>\n";
295
fin_cadre_enfonce();
296
	echo "<p>";
297
 
298
if ($options == "avancees") {
299
	debut_cadre_enfonce("cadenas-24.gif", false, "", _T('entree_cle_pgp'));
300
	echo "<TEXTAREA NAME='pgp' CLASS='forml' ROWS='4' COLS='40' wrap=soft>";
301
	echo entites_html($auteur['pgp']);
302
	echo "</TEXTAREA>\n";
303
	fin_cadre_enfonce();
304
	echo "<p>";
305
}
306
else {
307
	echo "<input type='hidden' name='pgp' value=\"".entites_html($auteur['pgp'])."\">";
308
}
309
 
310
echo "<p>";
311
	if ($champs_extra) {
312
		include_ecrire("inc_extra.php3");
313
		extra_saisie($auteur['extra'], 'auteurs', $auteur['statut']);
314
	}
315
 
316
fin_cadre_relief();
317
echo "<p>";
318
 
319
 
320
 
321
//
322
// Login et mot de passe :
323
// accessibles seulement aux admins non restreints et l'auteur lui-meme
324
//
325
 
326
if ($auteur['source'] != 'spip') {
327
	$edit_login = false;
328
	$edit_pass = false;
329
}
330
else if (($connect_statut == "0minirezo") AND $connect_toutes_rubriques) {
331
	$edit_login = true;
332
	$edit_pass = true;
333
}
334
else if ($connect_id_auteur == $id_auteur) {
335
	$edit_login = false;
336
	$edit_pass = true;
337
}
338
else {
339
	$edit_login = false;
340
	$edit_pass = false;
341
}
342
 
343
debut_cadre_relief("base-24.gif");
344
 
345
// Avertissement en cas de modifs de ses propres donnees
346
if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) {
347
	debut_cadre_enfonce();
348
	echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='right'");
349
	echo "<b>"._T('texte_login_precaution')."</b>\n";
350
	fin_cadre_enfonce();
351
	echo "<p>";
352
}
353
 
354
// Un redacteur n'a pas le droit de modifier son login !
355
if ($edit_login) {
356
	echo "<B>"._T('item_login')."</B> ";
357
	echo "<font color='red'>("._T('texte_plus_trois_car').")</font> :<BR>";
358
	echo "<INPUT TYPE='text' NAME='new_login' CLASS='formo' VALUE=\"".entites_html($auteur['login'])."\" SIZE='40'><P>\n";
359
}
360
else {
361
	echo "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><BR></legend><br><b>".$auteur['login']."</b> ";
362
	echo "<i> ("._T('info_non_modifiable').")</i><p>";
363
}
364
 
365
// On ne peut modifier le mot de passe en cas de source externe (par exemple LDAP)
366
if ($edit_pass) {
367
	echo "<B>"._T('entree_nouveau_passe')."</B> ";
368
	echo "<font color='red'>("._T('info_plus_cinq_car').")</font> :<BR>";
369
	echo "<INPUT TYPE='password' NAME='new_pass' CLASS='formo' VALUE=\"\" SIZE='40'><BR>\n";
370
	echo _T('info_confirmer_passe')."<BR>";
371
	echo "<INPUT TYPE='password' NAME='new_pass2' CLASS='formo' VALUE=\"\" SIZE='40'><P>\n";
372
}
373
fin_cadre_relief();
374
echo "<p />";
375
 
376
 
377
//
378
// Apparaitre dans la liste des redacteurs connectes
379
//
380
 
381
if ($connect_id_auteur == $id_auteur) {
382
 
383
	debut_cadre_relief("messagerie-24.gif", false, "", _T('info_liste_redacteurs_connectes'));
384
 
385
	echo "<div>"._T('texte_auteur_messagerie')."</div>";
386
 
387
		if ($auteur['imessage']=="non"){
388
			echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on'>";
389
			echo " <label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label> ";
390
			echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' CHECKED id='perso_activer_imessage_off'>";
391
			echo " <B><label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label></B> ";
392
		} else {
393
			echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on' CHECKED>";
394
			echo " <B><label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label></B> ";
395
 
396
			echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' id='perso_activer_imessage_off'>";
397
			echo " <label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label> ";
398
		}
399
 
400
	fin_cadre_relief();
401
	echo "<p />";
402
 
403
 
404
}
405
 
406
 
407
// Afficher le formulaire de changement de statut (cf. inc_acces.php3)
408
afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut']);
409
 
410
 
411
echo "<INPUT NAME='ajouter_id_article' VALUE='$ajouter_id_article' TYPE='hidden'>\n";
412
echo "<INPUT NAME='redirect' VALUE='$redirect' TYPE='hidden'>\n";
413
echo "<INPUT NAME='redirect_ok' VALUE='oui' TYPE='hidden'>\n";
414
 
415
echo "<DIV align='right'><INPUT TYPE='submit' CLASS='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'></DIV>";
416
 
417
echo "</div>";
418
 
419
echo "</form>";
420
fin_cadre_formulaire();
421
echo "&nbsp;<p>";
422
 
423
fin_page();
424
 
425
?>