Skip to content
Extraits de code Groupes Projets
Valider 26ffd918 rédigé par Fil's avatar Fil
Parcourir les fichiers

appliquer les autorisations sur articles.php et ses acolytes (cf....

appliquer les autorisations sur articles.php et ses acolytes (cf. http://zone.spip.org/trac/spip-zone/changeset/5012 notamment)
parent ed9ffca6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -15,6 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('inc/texte');
include_spip('inc/actions');
include_spip('inc/autoriser');
// http://doc.spip.org/@exec_articles_dist
function exec_articles_dist()
......@@ -25,7 +26,8 @@ function exec_articles_dist()
$row = spip_fetch_array(spip_query("SELECT * FROM spip_articles WHERE id_article=$id_article"));
if (!$row) {
if (!$row
OR !autoriser('voir', 'article', $id_article)) {
$res = $row['titre'] = _T('public:aucun_article');
$row['id_rubrique'] = 0;
} else {
......@@ -74,11 +76,9 @@ function articles_affiche($id_article, $row, $cherche_auteur, $ids, $cherche_mot
$virtuel = (substr($chapo, 0, 1) == '=') ? substr($chapo, 1) : '';
$statut_rubrique = acces_rubrique($id_rubrique);
$flag_auteur = spip_num_rows(auteurs_article($id_article, " id_auteur=$connect_id_auteur"));
$flag_editable = ($statut_rubrique OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle')));
$statut_rubrique = autoriser('publier_dans', 'rubrique', $id_rubrique);
$flag_editable = autoriser('modifier', 'article', $id_article);
// Est-ce que quelqu'un a deja ouvert l'article en edition ?
if ($flag_editable
......@@ -159,7 +159,8 @@ function articles_affiche($id_article, $row, $cherche_auteur, $ids, $cherche_mot
. (($spip_display == 4) ? ''
: articles_documents($flag_editable, 'article', $id_article))
. (($flag_auteur AND $statut_article == 'prepa' AND !$statut_rubrique)
. (($statut_article == 'prepa' AND !$statut_rubrique
AND spip_num_rows(auteurs_article($id_article, " id_auteur=$connect_id_auteur")))
? $instituer_article($id_article)
: '')
. "</div></div>"
......@@ -226,7 +227,11 @@ function boite_info_articles($id_article, $statut_article, $visites, $id_version
. "</div>\n"
. voir_en_ligne('article', $id_article, $statut_article, 'racine-24.gif', false);
if ($connect_statut == "0minirezo" AND $statut_article == 'publie' AND $visites > 0 AND $GLOBALS['meta']["activer_statistiques"] != "non" AND $options == "avancees"){
if ($statut_article == 'publie'
AND $visites > 0
AND $GLOBALS['meta']["activer_statistiques"] != "non"
AND $options == "avancees"
AND autoriser('voir_stats', 'article', $id_article)) {
$res .= icone_horizontale(_T('icone_evolution_visites', array('visites' => $visites)), generer_url_ecrire("statistiques_visites","id_article=$id_article"), "statistiques-24.gif","rien.gif", false);
}
......
......@@ -15,6 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('inc/revisions');
include_spip('inc/autoriser');
// http://doc.spip.org/@exec_articles_versions_dist
function exec_articles_versions_dist()
......@@ -43,6 +44,10 @@ function exec_articles_versions_dist()
// Lire l'article
//
if(!autoriser('voir_revisions', 'article', $id_article))
return;
$id_article = intval($id_article);
$result = spip_query("SELECT * FROM spip_articles WHERE id_article='$id_article'");
......@@ -205,15 +210,15 @@ echo "</td>";
echo "<td align='center'>";
// L'article est-il editable ?
$result_auteur = spip_query("SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur");
$flag_auteur = (spip_num_rows($result_auteur) > 0);
$flag_editable = (acces_rubrique($id_rubrique)
OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle')));
if ($flag_editable)
icone(_T('icone_modifier_article').'<br />('._T('version')." $id_version)", generer_url_ecrire("articles_edit","id_article=$id_article&id_version=$id_version"), "article-24.gif", "edit.gif");
// Icone de modification
if (autoriser('modifier', 'article', $id_article))
icone(
_T('icone_modifier_article').'<br />('._T('version')." $id_version)",
generer_url_ecrire("articles_edit",
"id_article=$id_article&id_version=$id_version"),
"article-24.gif",
"edit.gif"
);
echo "</td>";
......@@ -328,5 +333,7 @@ fin_cadre_relief();
echo fin_page();
}
?>
......@@ -25,17 +25,13 @@ function article_select($id_article, $id_rubrique, $lier_trad, $new) {
$id_rubrique = intval($id_rubrique);
$lier_trad = intval($lier_trad);
// ESSAI pour "Joindre un document" depuis l'espace prive (UPLOAD_DIRECT)
/*if ($GLOBALS['action'] AND $GLOBALS['doc']) {
global $action, $doc;
if ($var_nom = charger_fonction($action, 'action'))
$var_nom($doc);
else
spip_log("fonction $var_nom indisponible");
# return;
}*/
if ($id_article) {
include_spip('inc/autoriser');
if ($id_article) {
if (!autoriser('modifier','article',$id_article))
return false;
$result = spip_query("SELECT * FROM spip_articles WHERE id_article=$id_article");
if ($row = spip_fetch_array($result)) {
......@@ -44,11 +40,6 @@ function article_select($id_article, $id_rubrique, $lier_trad, $new) {
$id_secteur = $row['id_secteur'];
$statut = $row['statut'];
$result_auteur = spip_query("SELECT * FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur");
$flag_auteur = (spip_num_rows($result_auteur) > 0);
$flag_editable = (acces_rubrique($id_rubrique) OR ($flag_auteur > 0 AND ($statut == 'prepa' OR $statut == 'prop' OR $new == 'oui')));
}
}
else if ($new=='oui') {
......@@ -78,10 +69,7 @@ else if ($new=='oui') {
$row_rub = spip_fetch_array(spip_query("SELECT id_secteur FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
$row['id_secteur'] = $row_rub['id_secteur'];
}
$flag_editable = true;
}
if (!$flag_editable) return false;
}
// marquer le fait que l'article est ouvert en edition par toto a telle date
// une alerte sera donnee aux autres redacteurs sur exec=articles
......
......@@ -74,7 +74,7 @@ function autoriser($faire, $type='', $id=0, $qui = NULL, $opt = NULL) {
AND (function_exists($f) OR function_exists($f.='_dist'))
)
)
$a = $f($faire,$type,$id,$qui,$opt);
$a = $f($faire,$type,intval($id),$qui,$opt);
if (_DEBUG_AUTORISER) spip_log("$f($faire,$type,$id): ".($a?'OK':'niet'));
......@@ -110,7 +110,7 @@ function autoriser_modifier_rubrique_dist($faire, $type, $id, $qui, $opt) {
// = admins de rubrique parente si publiee
function autoriser_modifier_breve_dist($faire, $type, $id, $qui, $opt) {
$s = spip_query(
"SELECT id_rubrique,statut FROM spip_breves WHERE id_breve=".intval($id));
"SELECT id_rubrique,statut FROM spip_breves WHERE id_breve="._q($id));
$r = spip_fetch_array($s);
return
($r['statut'] == 'publie')
......@@ -123,15 +123,45 @@ function autoriser_modifier_breve_dist($faire, $type, $id, $qui, $opt) {
// = ou statut 'prop,prepa' et $qui est auteur
function autoriser_modifier_article_dist($faire, $type, $id, $qui, $opt) {
$s = spip_query(
"SELECT id_rubrique,statut FROM spip_articles WHERE id_article=".intval($id));
"SELECT id_rubrique,statut FROM spip_articles WHERE id_article="._q($id));
$r = spip_fetch_array($s);
return
autoriser('publier_dans', 'rubrique', $r['id_rubrique'], $qui, $opt)
OR (
in_array($qui['statut'], array('0minirezo', '1comite'))
AND in_array($r['statut'], array('prop','prepa'))
AND in_array($r['statut'], array('prop','prepa', 'poubelle'))
AND spip_num_rows(auteurs_article($id, "id_auteur=".$qui['id_auteur']))
);
}
// Lire les stats ?
// = tous les admins
function autoriser_voir_stats_dist($faire, $type, $id, $qui, $opt) {
return
$qui['statut'] == '0minirezo';
}
// Voir un objet
function autoriser_voir_dist($faire, $type, $id, $qui, $opt) {
if (
($qui['statut'] == '0minirezo')
OR ($type != 'article')
)
return true;
// un article 'prepa' ou 'poubelle' dont on n'est pas auteur : interdit
$s = spip_query(
"SELECT statut FROM spip_articles WHERE id_article="._q($id));
$r = spip_fetch_array($s);
return in_array($r['statut'], array('prop', 'publie'));
}
// Voir les revisions ?
// = voir l'objet
function autoriser_voir_revisions_dist($faire, $type, $id, $qui, $opt) {
return
autoriser('voir', $type, $id, $qui, $opt);
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter