From e0f9e091f5d5bbfcaa643a11ac5f0bc94e1d356a Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Fri, 21 Oct 2005 17:55:15 +0000 Subject: [PATCH] ne pas afficher un bouton vers un script interdit, et empecher les admins restreints de se changer mutuellement de logo --- ecrire/auteur_infos.php3 | 13 +-- ecrire/auteurs_edit.php3 | 44 ++++---- ecrire/inc_acces.php3 | 181 --------------------------------- ecrire/inc_auteur_infos.php | 193 ++++++++++++++++++++++++++++++++++++ 4 files changed, 217 insertions(+), 214 deletions(-) diff --git a/ecrire/auteur_infos.php3 b/ecrire/auteur_infos.php3 index f7c0ca100a..198ba4509e 100644 --- a/ecrire/auteur_infos.php3 +++ b/ecrire/auteur_infos.php3 @@ -43,16 +43,9 @@ if ($id_auteur) { // securite -// on peut se changer soi-meme -if ($connect_id_auteur != $id_auteur) { - // sinon on doit etre admin - // et pas admin restreint pour changer un autre admin - if (($connect_statut != "0minirezo") - OR (!$connect_toutes_rubriques AND $auteur['statut'] == "0minirezo")) - { - gros_titre(_T('info_acces_interdit')); - exit; - } +if (!statut_modifiable_auteur($id_auteur, $auteur)) { + gros_titre(_T('info_acces_interdit')); + exit; } diff --git a/ecrire/auteurs_edit.php3 b/ecrire/auteurs_edit.php3 index aba2513cec..d5bbc6e0cf 100644 --- a/ecrire/auteurs_edit.php3 +++ b/ecrire/auteurs_edit.php3 @@ -12,9 +12,9 @@ include ("inc.php3"); -include_ecrire ("inc_acces.php3"); include_ecrire ("inc_index.php3"); include_ecrire ("inc_logos.php3"); +include_ecrire ("inc_auteur_infos.php"); function supp_auteur($id_auteur) { $query="UPDATE spip_auteurs SET statut='5poubelle' WHERE id_auteur=$id_auteur"; @@ -29,25 +29,25 @@ $query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"; $result = spip_query($query); -if ($row = spip_fetch_array($result)) { - $id_auteur=$row['id_auteur']; - $nom=$row['nom']; - $bio=$row['bio']; - $email=$row['email']; - $nom_site_auteur=$row['nom_site']; - $url_site=$row['url_site']; - $login=$row['login']; - $pass=$row['pass']; - $statut=$row['statut']; - $pgp=$row["pgp"]; - $messagerie=$row["messagerie"]; - $imessage=$row["imessage"]; - $extra = $row["extra"]; - $low_sec = $row["low_sec"]; +if ($auteur = spip_fetch_array($result)) { + $id_auteur=$auteur['id_auteur']; + $nom=$auteur['nom']; + $bio=$auteur['bio']; + $email=$auteur['email']; + $nom_site_auteur=$auteur['nom_site']; + $url_site=$auteur['url_site']; + $login=$auteur['login']; + $pass=$auteur['pass']; + $statut=$auteur['statut']; + $pgp=$auteur["pgp"]; + $messagerie=$auteur["messagerie"]; + $imessage=$auteur["imessage"]; + $extra = $auteur["extra"]; + $low_sec = $auteur["low_sec"]; // Appliquer des modifications de statut -modifier_statut_auteur($row, $_POST['statut'], $_POST['id_rubrique'], $_GET['supp_rub']); +modifier_statut_auteur($auteur, $_POST['statut'], $_POST['id_rubrique'], $_GET['supp_rub']); if ($connect_id_auteur == $id_auteur) debut_page($nom, "auteurs", "perso"); else debut_page($nom,"auteurs","redacteurs"); @@ -89,12 +89,10 @@ fin_boite_info(); // Logos de l'auteur // -if ($id_auteur -AND (($connect_statut == '0minirezo') -OR ($connect_id_auteur == $id_auteur))) +if (statut_modifiable_auteur($id_auteur, $auteur)) { afficher_boite_logo('aut', 'id_auteur', $id_auteur, _T('logo_auteur').aide ("logoart"), _T('logo_survol')); - + } debut_droite(); @@ -120,7 +118,7 @@ debut_droite(); echo "<td>"; - if (($connect_statut == "0minirezo") OR $connect_id_auteur == $id_auteur) { + if (statut_modifiable_auteur($id_auteur, $auteur)) { icone (_T("admin_modifier_auteur"), "auteur_infos.php3?id_auteur=$id_auteur", "redacteurs-24.gif", "edit.gif"); } echo "</td></tr></table>"; @@ -136,7 +134,7 @@ debut_droite(); // Afficher le formulaire de changement de statut (cf. inc_acces.php3) if ($options == 'avancees') afficher_formulaire_statut_auteur ($id_auteur, - $row['statut'], + $auteur['statut'], "auteurs_edit.php3?id_auteur=$id_auteur"); fin_cadre_relief(); diff --git a/ecrire/inc_acces.php3 b/ecrire/inc_acces.php3 index 573215f7a9..dfabd17d82 100644 --- a/ecrire/inc_acces.php3 +++ b/ecrire/inc_acces.php3 @@ -87,187 +87,6 @@ function effacer_low_sec($id_auteur) { spip_query("UPDATE spip_auteurs SET low_sec = '' WHERE id_auteur = $id_auteur"); } - - -function ajax_rubriques_acces($id_parent) -{ - $query = spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id_parent"); - if ($row = spip_fetch_array($query)) { - $titre_parent = entites_html(typo($row["titre"])); - } else { - $titre_parent = entites_html(_T("info_racine_site")); - } - - return "<table width='100%'><tr width='100%'><td width='45'>" . - "<a href='#' onClick=\"javascript:if(findObj('selection_rubrique').style.display=='none') {charger_id_url_si_vide('ajax_page.php?fonction=aff_rubrique&id_rubrique=$id_rubrique','selection_rubrique');} else {findObj('selection_rubrique').style.display='none';} return true;\"><img src='img_pack/loupe.png' style='border: 0px; vertical-align: middle;' /></a> " . - "<img src='img_pack/searching.gif' id='img_selection_rubrique' style='visibility: hidden;' />" . - "</td><td>" . - "<input type='text' id='titreparent' name='titreparent' disabled='disabled' class='forml' value=\"$titre_parent\" />" . - "<input type='hidden' id='id_rubrique' name='id_rubrique' value='$id_rubrique' />" . - "</td></tr></table><div id='selection_rubrique' style='display: none;'></div>"; - -} - -function choix_statut_auteur($statut) -{ - global $connect_toutes_rubriques; - return "<select name='statut' size=1 class='fondl' - onChange=\"setvisibility('changer_statut_auteur', this.selectedIndex ? 'hidden' : 'visible');\">" . - - (!$connect_toutes_rubriques ? "" : - ("\n<option" . - mySel("0minirezo",$statut) . - ">" . - _T('item_administrateur_2') . - '</option>')) . - "\n<option" . - mySel("1comite",$statut) . - ">" . - _T('intem_redacteur') . - '</option>' . - (!(($statut == '6forum') - OR (lire_meta('accepter_visiteurs') == 'oui') - OR (lire_meta('forums_publics') == 'abo') - OR spip_num_rows(spip_query("SELECT statut FROM spip_auteurs WHERE statut='6forum'"))) ? "" : - ("\n<option" . - mySel("6forum",$statut) . - ">" . - _T('item_visiteur') . - '</option>')) . - "\n<option" . - mySel("5poubelle",$statut) . - " style='background:url(" . _DIR_IMG_PACK . "rayures-sup.gif)'>> "._T('texte_statut_poubelle') . - '</option>' . - "</select>\n"; -} - -// Une fonction service qui affiche le statut de l'auteur dans l'espace prive -function afficher_formulaire_statut_auteur ($id_auteur, $statut, $post='') { - global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur; - global $spip_lang_right; - - - // S'agit-il d'un admin restreint ? - if ($statut == '0minirezo') { - $query_admin = "SELECT lien.id_rubrique, titre FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique GROUP BY lien.id_rubrique"; - $result_admin = spip_query($query_admin); - $admin_restreint = (spip_num_rows($result_admin) > 0); - } - - $droit = ( ($connect_toutes_rubriques OR $statut != "0minirezo") - && ($connect_id_auteur != $id_auteur)); - - if ($post && $droit) { - $url_self = $post; - echo "<p />"; - echo "<form action='$post' method='post'>\n"; - } else - $url_self = "auteur_infos.php3?id_auteur=$id_auteur"; - - // les admins voient et peuvent modifier les droits - // les admins restreints les voient mais - // ne peuvent les utiliser que pour mettre un auteur a la poubelle - if ($connect_statut == "0minirezo") { - debut_cadre_relief(); - - if ($droit) { - /* Neutralisation momentanee des couches. A revoir. - $couches = $admin_restreint ? - bouton_block_visible("statut$id_auteur") : - bouton_block_invisible("statut$id_auteur"); - echo $couches; - */ - echo "<b>"._T('info_statut_auteur')." </b> "; - echo choix_statut_auteur($statut); - } - - // si pas admin au chargement, rien a montrer. - echo "<div id='changer_statut_auteur'", - (($statut == '0minirezo') ? '' : " style='visibility: hidden'"), - '>'; - - echo "\n<p /><div style='arial2'>"; - // si pas admin restreint au chargement, rien a calculer - if (!$admin_restreint) { - if ($statut == '0minirezo') { - echo _T('info_admin_gere_toutes_rubriques'); - } - } else { - echo _T('info_admin_gere_rubriques')."\n"; - echo "<ul style='list-style-image: url(" . _DIR_IMG_PACK . "rubrique-12.gif)'>"; - while ($row_admin = spip_fetch_array($result_admin)) { - $id_rubrique = $row_admin["id_rubrique"]; - echo "<li><a href='naviguer.php3?id_rubrique=$id_rubrique'>", typo($row_admin["titre"]), "</a>"; - - if ($connect_toutes_rubriques - AND $connect_id_auteur != $id_auteur) { - echo " <font size='1'>[<a href='$url_self&supp_rub=$id_rubrique'>", - _T('lien_supprimer_rubrique'), - "</a>]</font>"; - } - echo '</li>'; - $toutes_rubriques .= "$id_rubrique,"; - } - $toutes_rubriques = ",$toutes_rubriques"; - - echo "</ul>"; - } - echo "</div>\n"; - // si on a le droit de donner des droits, prevoir Ajax. - echo debut_block_visible("statut$id_auteur"); - if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) { - echo "\n<div id='ajax_rubrique' class='arial1'><br />\n"; - if (spip_num_rows($result_admin) == 0) { - echo "<b>"._T('info_restreindre_rubrique')."</b><br />"; - } else { - echo "<b>"._T('info_ajouter_rubrique')."</b><br />"; - } - echo "\n<input name='id_auteur' value='$id_auteur' TYPE='hidden' />"; - echo ajax_rubriques_acces(0); - echo "</div>\n"; - } - echo fin_block(); - - echo '</div>'; // fin de la balise a visibilite conditionnelle - - if ($post && $droit) { - echo "<div align='", - $spip_lang_right, - "'><input type='submit' class='fondo' value=\"", - _T('bouton_valider'), - "\" /></div>", - "</form>\n"; - } - - fin_cadre_relief(); - } -} - -function modifier_statut_auteur (&$auteur, $statut, $add_rub='', $supp_rub='') { - global $connect_statut, $connect_toutes_rubriques; - // changer le statut ? - if ($connect_statut == '0minirezo' AND $statut) { - if (ereg("^(0minirezo|1comite|5poubelle|6forum)$",$statut)) { - $auteur['statut'] = $statut; - spip_query("UPDATE spip_auteurs SET statut='".$statut."' - WHERE id_auteur=".$auteur['id_auteur']); - } - } - // modif auteur restreint, seulement pour les admins - if ($connect_toutes_rubriques) { - if ($add_rub=intval($add_rub)) - spip_query("INSERT INTO spip_auteurs_rubriques - (id_auteur,id_rubrique) - VALUES(".$auteur['id_auteur'].", $add_rub)"); - - if ($supp_rub=intval($supp_rub)) - spip_query("DELETE FROM spip_auteurs_rubriques - WHERE id_auteur=".$auteur['id_auteur']." - AND id_rubrique=$supp_rub"); - } -} - - function initialiser_sel() { global $htsalt; diff --git a/ecrire/inc_auteur_infos.php b/ecrire/inc_auteur_infos.php index c3ec70fa26..e69d33abf7 100644 --- a/ecrire/inc_auteur_infos.php +++ b/ecrire/inc_auteur_infos.php @@ -233,4 +233,197 @@ function apparait_auteur_infos($id_auteur, $auteur) } } +function ajax_rubriques_acces($id_parent) +{ + $query = spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id_parent"); + if ($row = spip_fetch_array($query)) { + $titre_parent = entites_html(typo($row["titre"])); + } else { + $titre_parent = entites_html(_T("info_racine_site")); + } + + return "<table width='100%'><tr width='100%'><td width='45'>" . + "<a href='#' onClick=\"javascript:if(findObj('selection_rubrique').style.display=='none') {charger_id_url_si_vide('ajax_page.php?fonction=aff_rubrique&id_rubrique=$id_rubrique','selection_rubrique');} else {findObj('selection_rubrique').style.display='none';} return true;\"><img src='img_pack/loupe.png' style='border: 0px; vertical-align: middle;' /></a> " . + "<img src='img_pack/searching.gif' id='img_selection_rubrique' style='visibility: hidden;' />" . + "</td><td>" . + "<input type='text' id='titreparent' name='titreparent' disabled='disabled' class='forml' value=\"$titre_parent\" />" . + "<input type='hidden' id='id_rubrique' name='id_rubrique' value='$id_rubrique' />" . + "</td></tr></table><div id='selection_rubrique' style='display: none;'></div>"; + +} + +function choix_statut_auteur($statut) +{ + global $connect_toutes_rubriques; + return "<select name='statut' size=1 class='fondl' + onChange=\"setvisibility('changer_statut_auteur', this.selectedIndex ? 'hidden' : 'visible');\">" . + + (!$connect_toutes_rubriques ? "" : + ("\n<option" . + mySel("0minirezo",$statut) . + ">" . + _T('item_administrateur_2') . + '</option>')) . + "\n<option" . + mySel("1comite",$statut) . + ">" . + _T('intem_redacteur') . + '</option>' . + (!(($statut == '6forum') + OR (lire_meta('accepter_visiteurs') == 'oui') + OR (lire_meta('forums_publics') == 'abo') + OR spip_num_rows(spip_query("SELECT statut FROM spip_auteurs WHERE statut='6forum'"))) ? "" : + ("\n<option" . + mySel("6forum",$statut) . + ">" . + _T('item_visiteur') . + '</option>')) . + "\n<option" . + mySel("5poubelle",$statut) . + " style='background:url(" . _DIR_IMG_PACK . "rayures-sup.gif)'>> "._T('texte_statut_poubelle') . + '</option>' . + "</select>\n"; +} + +// affiche le statut de l'auteur dans l'espace prive + +function afficher_formulaire_statut_auteur ($id_auteur, $statut, $post='') { + global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur; + global $spip_lang_right; + + + // S'agit-il d'un admin restreint ? + if ($statut == '0minirezo') { + $query_admin = "SELECT lien.id_rubrique, titre FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique GROUP BY lien.id_rubrique"; + $result_admin = spip_query($query_admin); + $admin_restreint = (spip_num_rows($result_admin) > 0); + } + + $droit = ( ($connect_toutes_rubriques OR $statut != "0minirezo") + && ($connect_id_auteur != $id_auteur)); + + if ($post && $droit) { + $url_self = $post; + echo "<p />"; + echo "<form action='$post' method='post'>\n"; + } else + $url_self = "auteur_infos.php3?id_auteur=$id_auteur"; + + // les admins voient et peuvent modifier les droits + // les admins restreints les voient mais + // ne peuvent les utiliser que pour mettre un auteur a la poubelle + if ($connect_statut == "0minirezo") { + debut_cadre_relief(); + + if ($droit) { + /* Neutralisation momentanee des couches. A revoir. + $couches = $admin_restreint ? + bouton_block_visible("statut$id_auteur") : + bouton_block_invisible("statut$id_auteur"); + echo $couches; + */ + echo "<b>"._T('info_statut_auteur')." </b> "; + echo choix_statut_auteur($statut); + } + + // si pas admin au chargement, rien a montrer. + echo "<div id='changer_statut_auteur'", + (($statut == '0minirezo') ? '' : " style='visibility: hidden'"), + '>'; + + echo "\n<p /><div style='arial2'>"; + // si pas admin restreint au chargement, rien a calculer + if (!$admin_restreint) { + if ($statut == '0minirezo') { + echo _T('info_admin_gere_toutes_rubriques'); + } + } else { + echo _T('info_admin_gere_rubriques')."\n"; + echo "<ul style='list-style-image: url(" . _DIR_IMG_PACK . "rubrique-12.gif)'>"; + while ($row_admin = spip_fetch_array($result_admin)) { + $id_rubrique = $row_admin["id_rubrique"]; + echo "<li><a href='naviguer.php3?id_rubrique=$id_rubrique'>", typo($row_admin["titre"]), "</a>"; + + if ($connect_toutes_rubriques + AND $connect_id_auteur != $id_auteur) { + echo " <font size='1'>[<a href='$url_self&supp_rub=$id_rubrique'>", + _T('lien_supprimer_rubrique'), + "</a>]</font>"; + } + echo '</li>'; + $toutes_rubriques .= "$id_rubrique,"; + } + $toutes_rubriques = ",$toutes_rubriques"; + + echo "</ul>"; + } + echo "</div>\n"; + // si on a le droit de donner des droits, prevoir Ajax. + echo debut_block_visible("statut$id_auteur"); + if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) { + echo "\n<div id='ajax_rubrique' class='arial1'><br />\n"; + if (spip_num_rows($result_admin) == 0) { + echo "<b>"._T('info_restreindre_rubrique')."</b><br />"; + } else { + echo "<b>"._T('info_ajouter_rubrique')."</b><br />"; + } + echo "\n<input name='id_auteur' value='$id_auteur' TYPE='hidden' />"; + echo ajax_rubriques_acces(0); + echo "</div>\n"; + } + echo fin_block(); + + echo '</div>'; // fin de la balise a visibilite conditionnelle + + if ($post && $droit) { + echo "<div align='", + $spip_lang_right, + "'><input type='submit' class='fondo' value=\"", + _T('bouton_valider'), + "\" /></div>", + "</form>\n"; + } + + fin_cadre_relief(); + } +} + +function statut_modifiable_auteur($id_auteur, $auteur) +{ + global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur; + +// on peut se changer soi-meme + return (($connect_id_auteur == $id_auteur) || + // sinon on doit etre admin + // et pas admin restreint pour changer un autre admin + (($connect_statut == "0minirezo") && + ($connect_toutes_rubriques OR + ($auteur['statut'] != "0minirezo")))); +} + +function modifier_statut_auteur (&$auteur, $statut, $add_rub='', $supp_rub='') { + global $connect_statut, $connect_toutes_rubriques; + // changer le statut ? + if ($connect_statut == '0minirezo' AND $statut) { + if (ereg("^(0minirezo|1comite|5poubelle|6forum)$",$statut)) { + $auteur['statut'] = $statut; + spip_query("UPDATE spip_auteurs SET statut='".$statut."' + WHERE id_auteur=".$auteur['id_auteur']); + } + } + // modif auteur restreint, seulement pour les admins + if ($connect_toutes_rubriques) { + if ($add_rub=intval($add_rub)) + spip_query("INSERT INTO spip_auteurs_rubriques + (id_auteur,id_rubrique) + VALUES(".$auteur['id_auteur'].", $add_rub)"); + + if ($supp_rub=intval($supp_rub)) + spip_query("DELETE FROM spip_auteurs_rubriques + WHERE id_auteur=".$auteur['id_auteur']." + AND id_rubrique=$supp_rub"); + } +} + + ?> -- GitLab