New file |
0,0 → 1,425 |
<?php |
|
/***************************************************************************\ |
* SPIP, Systeme de publication pour l'internet * |
* * |
* Copyright (c) 2001-2005 * |
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * |
* * |
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * |
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * |
\***************************************************************************/ |
|
|
include ("inc.php3"); |
include_ecrire ("inc_acces.php3"); |
include_ecrire ("inc_logos.php3"); |
include_ecrire ("inc_session.php3"); |
include_ecrire ("inc_filtres.php3"); |
include_ecrire ("inc_abstract_sql.php3"); |
|
// securite |
$id_auteur = floor($id_auteur); |
|
|
// |
// Auteurs a acces restreint |
// |
function afficher_auteur_rubriques($leparent){ |
global $id_parent; |
global $id_rubrique; |
global $toutes_rubriques; |
global $i; |
|
$i++; |
$query="SELECT * FROM spip_rubriques WHERE id_parent=$leparent ORDER BY 0+titre, titre"; |
$result=spip_query($query); |
|
while($row=spip_fetch_array($result)){ |
$my_rubrique=$row['id_rubrique']; |
$titre=typo($row['titre']); |
|
if (!ereg(",$my_rubrique,","$toutes_rubriques")){ |
$espace = str_repeat(" ", $i*2) . "|"; |
if ($i==1) |
$espace = "*"; |
|
echo "<OPTION VALUE='$my_rubrique'>$espace ".supprimer_tags($titre)."\n"; |
afficher_auteur_rubriques($my_rubrique); |
} |
} |
$i=$i-1; |
} |
|
// securite |
if ($connect_statut != "0minirezo" AND $connect_id_auteur != $id_auteur) { |
gros_titre(_T('info_acces_interdit')); |
exit; |
} |
|
// |
// Recuperer l'auteur (id_auteur) ... ou l'inventer |
// |
unset($auteur); |
|
if ($id_auteur) { |
$auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur")); |
$new = false; // eviter hack |
} else { |
if (!$auteur['nom'] = $titre) { |
$auteur['nom'] = filtrer_entites(_T('item_nouvel_auteur')); |
$onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; |
} |
$auteur['statut'] = '1comite'; // statut par defaut a la creation |
$auteur['source'] = 'spip'; |
} |
|
|
// |
// Modification (et creation si besoin) |
// |
if ($nom) { // si on poste un nom, c'est qu'on modifie une fiche auteur |
$auteur['nom'] = corriger_caracteres($nom); |
|
// login et mot de passe |
unset ($modif_login); |
$old_login = $auteur['login']; |
if (($new_login<>$old_login) AND $connect_statut == '0minirezo' AND $connect_toutes_rubriques AND $auteur['source'] == 'spip') { |
if ($new_login) { |
if (strlen($new_login) < 4) |
$echec .= "<p>"._T('info_login_trop_court'); |
else if (spip_num_rows(spip_query("SELECT * FROM spip_auteurs WHERE login='".addslashes($new_login)."' AND id_auteur!=$id_auteur AND statut!='5poubelle'"))) |
$echec .= "<p>"._T('info_login_existant'); |
else if ($new_login != $old_login) { |
$modif_login = true; |
$auteur['login'] = $new_login; |
} |
} |
// suppression du login |
else { |
$auteur['login'] = ''; |
$modif_login = true; |
} |
} |
|
// changement de pass, a securiser en jaja ? |
if ($new_pass AND ($statut != '5poubelle') AND $auteur['login'] AND $auteur['source'] == 'spip') { |
if ($new_pass != $new_pass2) |
$echec .= "<p>"._T('info_passes_identiques'); |
else if ($new_pass AND strlen($new_pass) < 6) |
$echec .= "<p>"._T('info_passe_trop_court'); |
else { |
$modif_login = true; |
$auteur['new_pass'] = $new_pass; |
} |
} |
|
if ($modif_login) { |
include_ecrire('inc_session.php3'); |
zap_sessions ($auteur['id_auteur'], true); |
if ($connect_id_auteur == $auteur['id_auteur']) |
supprimer_session($GLOBALS['spip_session']); |
} |
|
// email |
// seuls les admins peuvent modifier l'email |
// les admins restreints peuvent modifier l'email des redacteurs |
// mais pas des autres admins |
if ($connect_statut == '0minirezo' |
AND ($connect_toutes_rubriques OR $statut<>'0minirezo')) { |
if ($email !='' AND !email_valide($email)) { |
$echec .= "<p>"._T('info_email_invalide'); |
$auteur['email'] = $email; |
} else |
$auteur['email'] = $email; |
} |
|
if ($connect_id_auteur == $id_auteur) { |
if ($perso_activer_imessage) { |
$query = "UPDATE spip_auteurs SET imessage='$perso_activer_imessage' WHERE id_auteur=$id_auteur"; |
$result = spip_query($query); |
$auteur['imessage'] = $perso_activer_imessage; |
} |
} |
|
// variables sans probleme |
$auteur['bio'] = corriger_caracteres($bio); |
$auteur['pgp'] = corriger_caracteres($pgp); |
$auteur['nom_site'] = corriger_caracteres($nom_site_auteur); // attention mix avec $nom_site_spip ;( |
$auteur['url_site'] = vider_url($url_site); |
|
if ($new_pass) { |
$htpass = generer_htpass($new_pass); |
$alea_actuel = creer_uniqid(); |
$alea_futur = creer_uniqid(); |
$pass = md5($alea_actuel.$new_pass); |
$query_pass = " pass='$pass', htpass='$htpass', alea_actuel='$alea_actuel', alea_futur='$alea_futur', "; |
if ($auteur['id_auteur']) |
effacer_low_sec($auteur['id_auteur']); |
} else |
$query_pass = ''; |
|
// recoller les champs du extra |
if ($champs_extra) { |
include_ecrire("inc_extra.php3"); |
$extra = extra_recup_saisie("auteurs"); |
$add_extra = ", extra = '".addslashes($extra)."'"; |
} else |
$add_extra = ''; |
|
// l'entrer dans la base |
if (!$echec) { |
if (!$auteur['id_auteur']) { // creation si pas d'id |
$auteur['id_auteur'] = spip_abstract_insert("spip_auteurs", "(nom)", "('temp')"); |
|
$id_auteur = $auteur['id_auteur']; |
|
if ($ajouter_id_article = intval($ajouter_id_article)) |
spip_query("INSERT INTO spip_auteurs_articles (id_auteur, id_article) VALUES ($id_auteur, $ajouter_id_article)"); |
} |
|
$query = "UPDATE spip_auteurs SET $query_pass |
nom='".addslashes($auteur['nom'])."', |
login='".addslashes($auteur['login'])."', |
bio='".addslashes($auteur['bio'])."', |
email='".addslashes($auteur['email'])."', |
nom_site='".addslashes($auteur['nom_site'])."', |
url_site='".addslashes($auteur['url_site'])."', |
pgp='".addslashes($auteur['pgp'])."' |
$add_extra |
WHERE id_auteur=".$auteur['id_auteur']; |
spip_query($query) OR die($query); |
} |
} |
|
// Appliquer des modifications de statut |
modifier_statut_auteur($auteur, $_POST['statut'], $_POST['add_rub'], $_GET['supp_rub']); |
|
|
// Si on modifie la fiche auteur, reindexer et modifier htpasswd |
if ($nom OR $statut) { |
if (lire_meta('activer_moteur') == 'oui') { |
include_ecrire ("inc_index.php3"); |
marquer_indexer('auteur', $id_auteur); |
} |
|
// Mettre a jour les fichiers .htpasswd et .htpasswd-admin |
ecrire_acces(); |
} |
|
// Redirection |
if (!$echec AND $redirect_ok == "oui") { |
redirige_par_entete($redirect ? rawurldecode($redirect) : "auteurs_edit.php3?id_auteur=$id_auteur"); |
} |
|
|
// |
// Affichage |
// |
|
if ($connect_id_auteur == $id_auteur) |
debut_page($auteur['nom'], "auteurs", "perso"); |
else |
debut_page($auteur['nom'],"auteurs","redacteurs"); |
|
echo "<br><br><br>"; |
|
debut_gauche(); |
|
if ($id_auteur) { |
debut_boite_info(); |
echo "<CENTER>"; |
echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_cadre_numero_auteur')." :</B></FONT>"; |
echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_auteur</B></FONT>"; |
echo "</CENTER>"; |
fin_boite_info(); |
} |
|
debut_droite(); |
|
|
// |
// Formulaire d'edition de l'auteur |
// |
|
if ($echec){ |
debut_cadre_relief(); |
echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='left'"); |
echo "<font color='red'>$echec <p>"._T('info_recommencer')."</font>"; |
fin_cadre_relief(); |
echo "<p>"; |
} |
|
|
debut_cadre_formulaire(); |
echo "<FORM ACTION='auteur_infos.php3?id_auteur=$id_auteur' METHOD='post'>"; |
echo "<INPUT TYPE='Hidden' NAME='id_auteur' VALUE=\"$id_auteur\">"; |
|
|
// |
// Infos personnelles |
// |
|
echo "<div class='serif'>"; |
|
debut_cadre_relief("fiche-perso-24.gif", false, "", _T("icone_informations_personnelles")); |
|
echo _T('titre_cadre_signature_obligatoire'); |
echo "("._T('entree_nom_pseudo').")<BR>"; |
echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"".entites_html($auteur['nom'])."\" SIZE='40' $onfocus><P>"; |
|
echo "<B>"._T('entree_adresse_email')."</B>"; |
|
if ($connect_statut == "0minirezo" |
AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo')) { |
echo "<br><INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"".entites_html($auteur['email'])."\" SIZE='40'><P>\n"; |
} |
else { |
echo " : <tt>".$auteur['email']."</tt>"; |
echo "<br>("._T('info_reserve_admin').")\n"; |
echo "<P>"; |
} |
|
echo "<B>"._T('entree_infos_perso')."</B><BR>"; |
echo "("._T('entree_biographie').")<BR>"; |
echo "<TEXTAREA NAME='bio' CLASS='forml' ROWS='4' COLS='40' wrap=soft>"; |
echo entites_html($auteur['bio']); |
echo "</TEXTAREA>\n"; |
|
debut_cadre_enfonce("site-24.gif", false, "", _T('info_site_web')); |
echo "<B>"._T('entree_nom_site')."</B><BR>"; |
echo "<INPUT TYPE='text' NAME='nom_site_auteur' CLASS='forml' VALUE=\"".entites_html($auteur['nom_site'])."\" SIZE='40'><P>\n"; |
|
echo "<B>"._T('entree_url')."</B><BR>"; |
echo "<INPUT TYPE='text' NAME='url_site' CLASS='forml' VALUE=\"".entites_html($auteur['url_site'])."\" SIZE='40'>\n"; |
fin_cadre_enfonce(); |
echo "<p>"; |
|
if ($options == "avancees") { |
debut_cadre_enfonce("cadenas-24.gif", false, "", _T('entree_cle_pgp')); |
echo "<TEXTAREA NAME='pgp' CLASS='forml' ROWS='4' COLS='40' wrap=soft>"; |
echo entites_html($auteur['pgp']); |
echo "</TEXTAREA>\n"; |
fin_cadre_enfonce(); |
echo "<p>"; |
} |
else { |
echo "<input type='hidden' name='pgp' value=\"".entites_html($auteur['pgp'])."\">"; |
} |
|
echo "<p>"; |
if ($champs_extra) { |
include_ecrire("inc_extra.php3"); |
extra_saisie($auteur['extra'], 'auteurs', $auteur['statut']); |
} |
|
fin_cadre_relief(); |
echo "<p>"; |
|
|
|
// |
// Login et mot de passe : |
// accessibles seulement aux admins non restreints et l'auteur lui-meme |
// |
|
if ($auteur['source'] != 'spip') { |
$edit_login = false; |
$edit_pass = false; |
} |
else if (($connect_statut == "0minirezo") AND $connect_toutes_rubriques) { |
$edit_login = true; |
$edit_pass = true; |
} |
else if ($connect_id_auteur == $id_auteur) { |
$edit_login = false; |
$edit_pass = true; |
} |
else { |
$edit_login = false; |
$edit_pass = false; |
} |
|
debut_cadre_relief("base-24.gif"); |
|
// Avertissement en cas de modifs de ses propres donnees |
if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) { |
debut_cadre_enfonce(); |
echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='right'"); |
echo "<b>"._T('texte_login_precaution')."</b>\n"; |
fin_cadre_enfonce(); |
echo "<p>"; |
} |
|
// Un redacteur n'a pas le droit de modifier son login ! |
if ($edit_login) { |
echo "<B>"._T('item_login')."</B> "; |
echo "<font color='red'>("._T('texte_plus_trois_car').")</font> :<BR>"; |
echo "<INPUT TYPE='text' NAME='new_login' CLASS='formo' VALUE=\"".entites_html($auteur['login'])."\" SIZE='40'><P>\n"; |
} |
else { |
echo "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><BR></legend><br><b>".$auteur['login']."</b> "; |
echo "<i> ("._T('info_non_modifiable').")</i><p>"; |
} |
|
// On ne peut modifier le mot de passe en cas de source externe (par exemple LDAP) |
if ($edit_pass) { |
echo "<B>"._T('entree_nouveau_passe')."</B> "; |
echo "<font color='red'>("._T('info_plus_cinq_car').")</font> :<BR>"; |
echo "<INPUT TYPE='password' NAME='new_pass' CLASS='formo' VALUE=\"\" SIZE='40'><BR>\n"; |
echo _T('info_confirmer_passe')."<BR>"; |
echo "<INPUT TYPE='password' NAME='new_pass2' CLASS='formo' VALUE=\"\" SIZE='40'><P>\n"; |
} |
fin_cadre_relief(); |
echo "<p />"; |
|
|
// |
// Apparaitre dans la liste des redacteurs connectes |
// |
|
if ($connect_id_auteur == $id_auteur) { |
|
debut_cadre_relief("messagerie-24.gif", false, "", _T('info_liste_redacteurs_connectes')); |
|
echo "<div>"._T('texte_auteur_messagerie')."</div>"; |
|
if ($auteur['imessage']=="non"){ |
echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on'>"; |
echo " <label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label> "; |
echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' CHECKED id='perso_activer_imessage_off'>"; |
echo " <B><label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label></B> "; |
} else { |
echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on' CHECKED>"; |
echo " <B><label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label></B> "; |
|
echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' id='perso_activer_imessage_off'>"; |
echo " <label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label> "; |
} |
|
fin_cadre_relief(); |
echo "<p />"; |
|
|
} |
|
|
// Afficher le formulaire de changement de statut (cf. inc_acces.php3) |
afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut']); |
|
|
echo "<INPUT NAME='ajouter_id_article' VALUE='$ajouter_id_article' TYPE='hidden'>\n"; |
echo "<INPUT NAME='redirect' VALUE='$redirect' TYPE='hidden'>\n"; |
echo "<INPUT NAME='redirect_ok' VALUE='oui' TYPE='hidden'>\n"; |
|
echo "<DIV align='right'><INPUT TYPE='submit' CLASS='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'></DIV>"; |
|
echo "</div>"; |
|
echo "</form>"; |
fin_cadre_formulaire(); |
echo " <p>"; |
|
fin_page(); |
|
?> |