From dec661f919c198db2ad460dd0506de497965f752 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Sat, 30 Jan 2010 11:34:19 +0000
Subject: [PATCH] report de [15045]

---
 ecrire/action/documenter.php |  7 +++----
 ecrire/inc/autoriser.php     | 14 ++++++++++++++
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php
index 42c2599615..cefea4962c 100644
--- a/ecrire/action/documenter.php
+++ b/ecrire/action/documenter.php
@@ -39,10 +39,9 @@ function supprimer_lien_document($id_document, $objet, $id_objet) {
 	sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document);
 
 	// On supprime ensuite s'il est orphelin
-	if (!sql_countsel('spip_documents_liens', 'id_document='.$id_document)){
-		$supprimer_document = charger_fonction('supprimer_document','action');
-		return $supprimer_document($id_document);
-	}
+	// (autorisation verifiee dans l'action)
+	$supprimer_document = charger_fonction('supprimer_document','action');
+	return $supprimer_document($id_document);
 }
 
 // http://doc.spip.org/@action_documenter_post
diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php
index cdfae968c0..a6177fe010 100644
--- a/ecrire/inc/autoriser.php
+++ b/ecrire/inc/autoriser.php
@@ -274,6 +274,20 @@ function autoriser_document_modifier_dist($faire, $type, $id, $qui, $opt){
 }
 
 
+// On ne peut supprimer un document que s'il n'est lie a aucun objet
+// c'est autorise pour tout auteur ayant acces a ecrire
+// http://doc.spip.org/@autoriser_document_modifier_dist
+function autoriser_document_supprimer_dist($faire, $type, $id, $qui, $opt){
+	if (!intval($id)
+		OR !$qui['id_auteur']
+		OR !autoriser('ecrire','','',$qui))
+		return false;
+	if (sql_countsel('spip_documents_liens', 'id_document='.intval($id)))
+		return false;
+
+	return true;
+}
+
 // Autoriser a modifier la breve $id
 // = admins & redac si la breve n'est pas publiee
 // = admins de rubrique parente si publiee
-- 
GitLab