From 9c42e9cc24d497f79346424719eb09c46566b91a Mon Sep 17 00:00:00 2001 From: Pierre Date: Wed, 11 Mar 2020 03:30:23 +0100 Subject: [PATCH] =?UTF-8?q?On=20cr=C3=A9e=20un=20deuxi=C3=A8me=20forum.=20?= =?UTF-8?q?On=20normalise=20les=20=C3=A9l=C3=A9ments=20du=20forum=20pour?= =?UTF-8?q?=20qu'il=20transmette=20l'id=20du=20forum=20en=20param=C3=A8tre?= =?UTF-8?q?,=20notamment=20pour=20la=20cr=C3=A9ation=20et=20la=20redirecti?= =?UTF-8?q?on=20dans=20le=20bon=20forum.=20On=20ajoute=20des=20fonctions?= =?UTF-8?q?=20d'autorisation=20pour=20qu'un=20cr=C3=A9ateur=20de=20sujet?= =?UTF-8?q?=20puisse=20le=20modifier=20tant=20qu'il=20n'a=20pas=20de=20r?= =?UTF-8?q?=C3=A9ponse.=20On=20modifie=20les=20autorisations=20pour=20le?= =?UTF-8?q?=20formulaire=20editer=5Fauteur,=20afin=20qu'un=20simple=20insc?= =?UTF-8?q?rit=20(6forum)=20puisse=20=C3=A9diter=20son=20profil=20aussi=20?= =?UTF-8?q?!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- action/supprimer_sujet.php | 4 +- balint_autorisations.php | 97 +++++++++++++++++++++++++++++ content/editer_sujet.html | 4 +- content/espace_membre.html | 22 ++++--- content/forum_discussion.html | 19 +----- content/gerer_auteurs.html | 2 +- css/_sq_balint.scss | 4 +- css/mon_site.css | 4 +- formulaires/configurer_balint.html | 8 ++- formulaires/editer_sujet.html | 6 +- formulaires/editer_sujet.php | 12 ++-- formulaires/inscription.php | 4 +- inclure/article-forum.html | 2 +- inclure/bouton_supprimer_sujet.html | 10 +-- inclure/espace_membre_contenu.html | 8 +-- inclure/forum_discussion.html | 10 +-- inclure/menu-espace_membre.html | 7 ++- inclure/menu_principal.html | 12 +++- inclure/sujets-forum.html | 10 +-- modeles/mail_inscription.html | 2 +- 20 files changed, 176 insertions(+), 71 deletions(-) diff --git a/action/supprimer_sujet.php b/action/supprimer_sujet.php index e9c65a3..e684e88 100644 --- a/action/supprimer_sujet.php +++ b/action/supprimer_sujet.php @@ -19,8 +19,8 @@ function action_supprimer_sujet_dist(){ suivre_invalideur("id='id_article/$id_article'"); } - // redirection sur l'accueil - $retour = 'spip.php?page=forum_discussion'; + // redirection + $retour = _request('redirect'); include_spip('inc/headers'); redirige_par_entete($retour); } diff --git a/balint_autorisations.php b/balint_autorisations.php index 3cff955..0a16040 100644 --- a/balint_autorisations.php +++ b/balint_autorisations.php @@ -20,6 +20,82 @@ if (!defined('_ECRIRE_INC_VERSION')) { function balint_autoriser() { } +function autoriser_auteur_modifier($faire, $type, $id, $qui, $opt) { + + // Ni admin ni redacteur => non + if (!in_array($qui['statut'], array('0minirezo', '1comite', '6forum'))) { + return false; + } + + // Un redacteur peut modifier ses propres donnees mais ni son login/email + // ni son statut (qui sont le cas echeant passes comme option) + if (in_array($qui['statut'], array('1comite','6forum'))) { + if (!empty($opt['webmestre'])) { + return false; + } elseif ( + !empty($opt['statut']) + or !empty($opt['restreintes']) + or !empty($opt['email']) + ) { + return false; + } elseif ($id == $qui['id_auteur']) { + return true; + } else { + return false; + } + } + + // Un admin restreint peut modifier/creer un auteur non-admin mais il + // n'a le droit ni de le promouvoir admin, ni de changer les rubriques + if ($qui['restreint']) { + if (isset($opt['webmestre']) and $opt['webmestre']) { + return false; + } elseif ((isset($opt['statut']) and ($opt['statut'] == '0minirezo')) + or (isset($opt['restreintes']) and $opt['restreintes']) + ) { + return false; + } else { + if ($id == $qui['id_auteur']) { + if (isset($opt['statut']) and $opt['statut']) { + return false; + } else { + return true; + } + } else { + if ($id_auteur = intval($id)) { + $t = sql_fetsel('statut', 'spip_auteurs', "id_auteur=$id_auteur"); + if ($t and $t['statut'] != '0minirezo') { + return true; + } else { + return false; + } + } // id = 0 => creation + else { + return true; + } + } + } + } + + // Un admin complet fait ce qu'il veut + // sauf se degrader + if ($id == $qui['id_auteur'] && (isset($opt['statut']) and $opt['statut'])) { + return false; + } elseif (isset($opt['webmestre']) + and $opt['webmestre'] + and (defined('_ID_WEBMESTRES') + or !autoriser('webmestre'))) { + // et toucher au statut webmestre si il ne l'est pas lui meme + // ou si les webmestres sont fixes par constante (securite) + return false; + } // et modifier un webmestre si il ne l'est pas lui meme + elseif (intval($id) and autoriser('webmestre', '', 0, $id) and !autoriser('webmestre')) { + return false; + } else { + return true; + } +} + function autoriser_article_modifier($faire, $type, $id, $qui, $opt) { if(in_array($qui['id_auteur'],auteurs_objet('article',$id))){ @@ -30,3 +106,24 @@ function autoriser_article_modifier($faire, $type, $id, $qui, $opt) { } } +function autoriser_sujet_creer($faire, $type, $id, $qui, $opt) { + return in_array($qui['statut'], array('0minirezo','1comite','6forum')); +} + +function autoriser_sujet_supprimer($faire, $type, $id, $qui, $opt) { + + // Si le sujet a eu au moins une réponse, on ne peut plus le supprimer + if (sql_fetsel('*','spip_forum',"id_objet=$id AND objet='article'")){ + return false; + } + // Sinon, seul les admins et l'auteur peuvent le supprimer + else{ + + if(in_array($qui['id_auteur'],auteurs_objet('article',$id))){ + return true; + } + else{ + return in_array($qui['statut'], array('0minirezo')); + } + } +} diff --git a/content/editer_sujet.html b/content/editer_sujet.html index 1c2ba1f..07813ab 100644 --- a/content/editer_sujet.html +++ b/content/editer_sujet.html @@ -12,7 +12,7 @@ [(#ENV{id_article}|oui) [(#AUTORISER{modifier, article, #ENV{id_article}}|?{
- [(#FORMULAIRE_EDITER_SUJET{#ENV{id_article},#URL_PAGE{espace_membre}|parametre_url{forum,oui}})]
+ [(#FORMULAIRE_EDITER_SUJET{#ENV{id_article},#ENV{id_forum},#URL_PAGE{#ENV{url}}|parametre_url{id_forum,#ENV{id_forum}}})]
,
Votre compte ne fait pas partie des auteurs autorisés à modifier cet article.
@@ -20,7 +20,7 @@ ] [(#ENV{id_article}|non)
- [(#FORMULAIRE_EDITER_SUJET{0,#URL_PAGE{espace_membre}|parametre_url{forum,oui}})] + [(#FORMULAIRE_EDITER_SUJET{0,#ENV{id_forum},#URL_PAGE{#ENV{url}}|parametre_url{id_forum,#ENV{id_forum}}})]
] ] diff --git a/content/espace_membre.html b/content/espace_membre.html index 4dea69a..9f5dada 100644 --- a/content/espace_membre.html +++ b/content/espace_membre.html @@ -1,21 +1,22 @@ - - [(#REM) On affiche la première rubrique par défaut]
+ + + +

Espace membre

- +
-
- +
[(#FORMULAIRE_LOGIN{#SELF})] @@ -25,7 +26,10 @@ [(#FORMULAIRE_INSCRIPTION)]
- + \ No newline at end of file +?> + + + diff --git a/content/forum_discussion.html b/content/forum_discussion.html index 995cf52..6dd0737 100644 --- a/content/forum_discussion.html +++ b/content/forum_discussion.html @@ -1,24 +1,13 @@
-
- -

Forum

- +
- -
- [(#TEXTE|textebrut)] -
- + - - - +
-
-
diff --git a/content/gerer_auteurs.html b/content/gerer_auteurs.html index 2f992c7..473a5a9 100644 --- a/content/gerer_auteurs.html +++ b/content/gerer_auteurs.html @@ -26,7 +26,7 @@ [(#STATUT|=={0minirezo}|oui) Administrateur] [(#STATUT|=={1comite}|oui) Rédacteur] - [(#STATUT|=={6forum}|oui) Membre] + [(#STATUT|=={6forum}|oui) Inscrit] diff --git a/css/_sq_balint.scss b/css/_sq_balint.scss index 245f584..8b2e675 100644 --- a/css/_sq_balint.scss +++ b/css/_sq_balint.scss @@ -900,8 +900,8 @@ body{ .sujet-forum{ padding: 1rem 0; background: $fond-transparent; - &:not(:last-of-type){ - border-bottom: solid 3px $gris-clair; + &:not(:first-of-type){ + border-top: solid 3px $gris-clair; } .spip_logo{ border-radius: 100%; diff --git a/css/mon_site.css b/css/mon_site.css index 375798a..1e01717 100644 --- a/css/mon_site.css +++ b/css/mon_site.css @@ -12902,8 +12902,8 @@ body { background: rgba(255, 255, 255, 0.92); } -.sujet-forum:not(:last-of-type) { - border-bottom: solid 3px #f2f2f2; +.sujet-forum:not(:first-of-type) { + border-top: solid 3px #f2f2f2; } .sujet-forum .spip_logo { diff --git a/formulaires/configurer_balint.html b/formulaires/configurer_balint.html index bfc3889..7c8dc7a 100644 --- a/formulaires/configurer_balint.html +++ b/formulaires/configurer_balint.html @@ -43,6 +43,7 @@ #SET{name1,id_rub_articles} #SET{name2,id_rub_groupes} #SET{name3,id_rub_forum} + #SET{name3b,id_rub_forum_prive} #SET{name4,id_mots_medias} #SET{name5,id_mots_espace_membre} #SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name1}}|table_valeur{#GET{name2}}} @@ -59,10 +60,15 @@
- + [(#GET{erreurs})]
+
+ + [(#GET{erreurs})] + +
[(#GET{erreurs})] diff --git a/formulaires/editer_sujet.html b/formulaires/editer_sujet.html index dd38f5d..6369c7b 100644 --- a/formulaires/editer_sujet.html +++ b/formulaires/editer_sujet.html @@ -14,12 +14,12 @@ Texte
- +
- +
@@ -36,7 +36,7 @@
-
diff --git a/formulaires/editer_sujet.php b/formulaires/editer_sujet.php index f4d2b51..ea01afa 100644 --- a/formulaires/editer_sujet.php +++ b/formulaires/editer_sujet.php @@ -1,11 +1,11 @@ $id)); + include_spip('action/editer_auteur'); if ($id_auteur = intval($desc['id_auteur'])){ // On modifie le mot de passe en utilisant les API de SPIP @@ -158,8 +160,6 @@ function formulaires_inscription_traiter_dist($mode = '', $id = 0) { auteur_modifier($id_auteur, $set); } - - // 2. On connecte l'auteur // appeler auth_identifier_login qui va : diff --git a/inclure/article-forum.html b/inclure/article-forum.html index b610303..4f08712 100644 --- a/inclure/article-forum.html +++ b/inclure/article-forum.html @@ -1,4 +1,4 @@ - Retour + Retour
diff --git a/inclure/bouton_supprimer_sujet.html b/inclure/bouton_supprimer_sujet.html index d13b389..54a5d3b 100644 --- a/inclure/bouton_supprimer_sujet.html +++ b/inclure/bouton_supprimer_sujet.html @@ -1,4 +1,6 @@ - - Supprimer - +[(#AUTORISER{supprimer, sujet, #ENV{id_article}}|oui) + + Supprimer + +] diff --git a/inclure/espace_membre_contenu.html b/inclure/espace_membre_contenu.html index 88004a3..3b31a79 100644 --- a/inclure/espace_membre_contenu.html +++ b/inclure/espace_membre_contenu.html @@ -11,11 +11,11 @@ - [(#ENV{forum}|=={oui}|non) + [(#ENV{id_forum}|non) ] - [(#ENV{forum}|=={oui}|oui) + [(#ENV{id_forum}|oui) [(#ENV{id_article}|oui) ] @@ -27,7 +27,7 @@
#ANCRE_PAGINATION - +
@@ -36,7 +36,7 @@ []
- [(#ENV{forum}|=={oui}|non) + [(#ENV{id_forum}|non) Il n'y a aucun article à afficher dans cette section pour l'instant. ]
diff --git a/inclure/forum_discussion.html b/inclure/forum_discussion.html index 1813fbc..af7246c 100644 --- a/inclure/forum_discussion.html +++ b/inclure/forum_discussion.html @@ -1,6 +1,6 @@ -

Forum

+ +

#TITRE

-
[(#TEXTE|textebrut)]
@@ -8,12 +8,12 @@ [(#ENV{id_article}|non) - + ] [(#ENV{id_article}|oui) - + ] \ No newline at end of file diff --git a/inclure/menu-espace_membre.html b/inclure/menu-espace_membre.html index 5cec9c1..16a8467 100644 --- a/inclure/menu-espace_membre.html +++ b/inclure/menu-espace_membre.html @@ -5,8 +5,11 @@