From 09d438c80e8dedc135ef6bf399867f4c1c472dd1 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Mon, 22 Jan 2007 10:08:06 +0000 Subject: [PATCH] retablir les bons droits de creation article/breve/site a partir de l'accueil Quand la rubrique par defaut n'est pas autorisee, on cherche un des secteurs autorises et on le prend par defaut si aucun secteur n'est autorise, il y a plus grand chose a faire ... --- ecrire/exec/articles_edit.php | 18 ++++++------------ ecrire/exec/breves_edit.php | 35 +++++++++++++++++++++-------------- ecrire/exec/sites_edit.php | 7 +++++++ ecrire/inc/article_select.php | 7 +++++++ 4 files changed, 41 insertions(+), 26 deletions(-) diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php index 58f6cbe332..c4640cb334 100644 --- a/ecrire/exec/articles_edit.php +++ b/ecrire/exec/articles_edit.php @@ -31,9 +31,13 @@ function exec_articles_edit_dist() // http://doc.spip.org/@articles_edit function articles_edit($id_article, $id_rubrique,$lier_trad, $id_version, $new, $config_fonc) { + $row = article_select($id_article ? $id_article : $new, $id_rubrique, $lier_trad, $id_version); + $id_article = $row['id_article']; + $id_rubrique = $row['id_rubrique']; + $commencer_page = charger_fonction('commencer_page', 'inc'); - if ( - ($new AND !autoriser('creerarticledans','rubrique',$id_rubrique)) + if (!$row + OR ($new AND !autoriser('creerarticledans','rubrique',$id_rubrique)) OR (!$new AND (!autoriser('voir', 'article', $id_article) OR !autoriser('modifier','article', $id_article))) ) { echo $commencer_page(_T('info_modifier_titre', array('titre' => $titre)), "naviguer", "rubriques", $id_rubrique); @@ -44,16 +48,6 @@ function articles_edit($id_article, $id_rubrique,$lier_trad, $id_version, $new, pipeline('exec_init',array('args'=>array('exec'=>'articles_edit','id_article'=>$id_article),'data'=>'')); - $row = article_select($id_article ? $id_article : $new, $id_rubrique, $lier_trad, $id_version); - if (!$row) - {include_spip('minipres'); - echo minipres(); - exit; - } - - $id_article = $row['id_article']; - $id_rubrique = $row['id_rubrique']; - if ($id_version) $titre.= ' ('._T('version')." $id_version)"; else $titre = $row['titre']; diff --git a/ecrire/exec/breves_edit.php b/ecrire/exec/breves_edit.php index cbe5178037..75005ed8e4 100644 --- a/ecrire/exec/breves_edit.php +++ b/ecrire/exec/breves_edit.php @@ -25,8 +25,27 @@ function exec_breves_edit_dist() $id_rubrique = intval(_request('id_rubrique')); $new = _request('new'); - if ( (!$new AND (!autoriser('voir','breve',$id_breve) OR !autoriser('modifier','breve', $id_breve))) - OR ($new AND !autoriser('creerbrevedans','rubrique',$id_rubrique)) ) { + // appel du script a la racine, faut choisir + // on prend le dernier secteur cree + // dans une liste restreinte si admin restreint + + if (!$id_rubrique) { + $in = !$connect_id_rubrique ? '' + : (' AND id_rubrique IN (' . join(',', $connect_id_rubrique) . ')'); + $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0$in ORDER BY id_rubrique DESC LIMIT 1")); + $id_rubrique = $row_rub['id_rubrique']; + if (!autoriser('creerbrevedans','rubrique',$id_rubrique )){ + // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises + $res = spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0"); + while (!autoriser('creerbrevedans','rubrique',$id_rubrique ) && $row_rub = spip_fetch_array($res)){ + $id_rubrique = $row_rub['id_rubrique']; + } + } + } + + $commencer_page = charger_fonction('commencer_page', 'inc'); + if ( ($new!='oui' AND (!autoriser('voir','breve',$id_breve) OR !autoriser('modifier','breve', $id_breve))) + OR ($new=='oui' AND !autoriser('creerbrevedans','rubrique',$id_rubrique)) ) { echo $commencer_page("« $titre_breve »", "naviguer", "breves", $id_rubrique); echo "<strong>"._T('avis_acces_interdit')."</strong>"; echo fin_page(); @@ -66,7 +85,6 @@ function exec_breves_edit_dist() pipeline('exec_init',array('args'=>array('exec'=>'breves_edit','id_breve'=>$id_breve),'data'=>'')); -$commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('titre_page_breves_edit', array('titre' => $titre)), "naviguer", "breves", $id_rubrique); @@ -132,17 +150,6 @@ if ($connect_statut=="0minirezo" OR $statut=="prop" OR $new == "oui") { $form .= debut_cadre_couleur("$logo_parent", true, "",_T('entree_interieur_rubrique').aide ("brevesrub")); - // appel du script a la racine, faut choisir - // on prend le dernier secteur cree - // dans une liste restreinte si admin restreint - - if (!$id_rubrique) { - $in = !$connect_id_rubrique ? '' - : (' AND id_rubrique IN (' . join(',', $connect_id_rubrique) . ')'); - $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0$in ORDER BY id_rubrique DESC LIMIT 1")); - $id_rubrique = $row_rub['id_rubrique']; - } - // selecteur de rubrique (en general pas d'ajax car toujours racine) $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc'); $form .= $chercher_rubrique($id_rubrique, 'breve', ($statut == 'publie')); diff --git a/ecrire/exec/sites_edit.php b/ecrire/exec/sites_edit.php index 6819034dc7..9fa7e2eede 100644 --- a/ecrire/exec/sites_edit.php +++ b/ecrire/exec/sites_edit.php @@ -38,6 +38,13 @@ function exec_sites_edit_dist() $row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques$in ORDER BY id_rubrique DESC LIMIT 1")); $id_rubrique = $row['id_rubrique']; } + if (!autoriser('creersitedans','rubrique',$id_rubrique )){ + // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises + $res = spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0"); + while (!autoriser('creersitedans','rubrique',$id_rubrique ) && $row_rub = spip_fetch_array($res)){ + $id_rubrique = $row_rub['id_rubrique']; + } + } } $commencer_page = charger_fonction('commencer_page', 'inc'); if ( ($new!='oui' AND (!autoriser('voir','site',$id_syndic) OR !autoriser('modifier','site',$id_syndic))) diff --git a/ecrire/inc/article_select.php b/ecrire/inc/article_select.php index 436b0a052f..f1f4540b02 100644 --- a/ecrire/inc/article_select.php +++ b/ecrire/inc/article_select.php @@ -70,6 +70,13 @@ function article_select($id_article, $id_rubrique=0, $lier_trad=0, $id_version=0 $row_rub = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques ORDER BY id_rubrique DESC LIMIT 1")); $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique']; } + if (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] )){ + // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises + $res = spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0"); + while (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] ) && $row_rub = spip_fetch_array($res)){ + $row['id_rubrique'] = $row_rub['id_rubrique']; + } + } } // recuperer le secteur, pour affecter les bons champs extras -- GitLab