diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php index 42c2599615826933039cc887a980976ed41c474a..cefea4962ccdfaee8d5e3a50a587fcb95cb630b3 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 cdfae968c0cce398b5cd873da70025d6cb1e2b2d..a6177fe0100e42de8773f2931c3da81ca882ad0a 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