On spécifie une autorisation de rédiger un article uniquement pour les animateurs de groupe et les admins

This commit is contained in:
Pierre 2020-03-13 19:03:50 +01:00
parent 2ed31b4084
commit 4b988fc6a2
4 changed files with 45 additions and 15 deletions

View file

@ -20,6 +20,18 @@ if (!defined('_ECRIRE_INC_VERSION')) {
function balint_autoriser() {
}
// Pour ne permettre l'accès à l'espace privé qu'aux admins
// (pour les autres, on redirige vers l'accueil)
function autoriser_ecrire($faire, $type, $id, $qui, $opt){
if ($qui['statut']!='0minirezo'){
include_spip('inc/headers');
redirige_par_entete( url_de_base());
}
else {
return in_array($qui['statut'], array('0minirezo'));
}
}
function autoriser_auteur_modifier($faire, $type, $id, $qui, $opt) {
// Ni admin ni redacteur => non
@ -106,6 +118,23 @@ function autoriser_article_modifier($faire, $type, $id, $qui, $opt) {
}
}
function autoriser_article_rediger($faire, $type, $id, $qui, $opt) {
// Si le membre est rédacteur, il doit être animateur d'au moins un groupe
if ($qui['statut']=="1comite"){
$id_rub = lire_config('balint/id_rub_groupes');
$T_id_groupes = sql_allfetsel('id_article','spip_articles','id_secteur=' . $id_rub);
foreach($T_id_groupes as $id_groupe){
if (in_array($qui['id_auteur'],auteurs_objet('article',$id_groupe['id_article']))){
return true;
}
}
}
// Sinon il faut être admin
else{
return in_array($qui['statut'], array('0minirezo'));
}
}
function autoriser_sujet_creer($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo','1comite','6forum'));
}

View file

@ -47,18 +47,5 @@ if (!isset($GLOBALS['z_blocs']))
'breadcrumb');
function autoriser_ecrire($faire, $type, $id, $qui, $opt){
// Pour ne permettre l'accès à l'espace privé qu'aux admins
// (pour les autres, on redirige vers l'accueil)
if ($qui['statut']!='0minirezo'){
include_spip('inc/headers');
redirige_par_entete( url_de_base());
}
else {
return in_array($qui['statut'], array('0minirezo'));
}
}
// On retire les boutons "Espace privé" et "Recalculer" pour les admins
$GLOBALS['flag_preserver'] = true;

View file

@ -32,17 +32,23 @@
<i class="fas fa-user" aria-hidden="true"></i> Mon compte
</a>
</li>
<?php
include_spip('inc/autoriser');
if (autoriser("rediger",'article')) { ?>
<li class="separ">
<a class="btn bouton-footer" href="[(#URL_PAGE{editer_article})]" title="Rédiger un article">
<i class="fas fa-pencil"></i> Rédiger un article
</a>
</li>
<li class="separ">
<a class="btn bouton-footer" href="[(#URL_PAGE{brouillons})]" title="Voir les brouillons">
<i class="fas fa-file"></i> Brouillons
</a>
</li>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND $GLOBALS['visiteur_session']['statut'] == '0minirezo') { ?>
<?php
}
if (isset($GLOBALS['visiteur_session']['statut']) AND $GLOBALS['visiteur_session']['statut'] == '0minirezo') { ?>
<li class="separ">
<a class="btn bouton-footer" href="[(#URL_PAGE{editer_groupe})]" title="Créer un groupe">
<i class="fas fa-globe"></i> Créer un groupe

View file

@ -89,9 +89,17 @@ function formulaires_editer_post_verifier_dist($id_article=0, $redirect=''){
// il faut au minimum titre et un texte pour créer un article
if (_request('titre') == '' OR _request('texte') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un titre et un texte pour créer un article.";
$erreurs['message_erreur'] = "Il faut obligatoirement un titre et un contenu pour créer un article.";
return $erreurs;
}
// Il faut sélectionner au moins un emplacement pour publier un article, sinon on le retrouve plus
if (_request('statut')=='publie'){
if (_request('id_emplacements') == '' AND _request('id_groupe') == ''){
$erreurs['message_erreur'] = "Il faut sélectionner un groupe ou un emplacement pour publier un article.";
return $erreurs;
}
}
$bigform = charger_fonction('bigform_verifier','inc');
$options = ['mime' => 'tout_mime','taille_max'=>'5000','largeur_max'=>'2048','hauteur_max'=>'2048'];