diff --git a/.gitattributes b/.gitattributes index 7cb8e75bee0fb2555caba800181b65dd877df8b6..82db6fb4c1f96762d8a1d41b9f6ea117c052302e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -93,6 +93,7 @@ ecrire/action/referencer_traduction.php -text ecrire/action/regler_moderation.php -text ecrire/action/reorganiser.php -text ecrire/action/supprimer.php -text +ecrire/action/supprimer_document.php -text ecrire/action/supprimer_traduction.php -text ecrire/action/tester.php -text ecrire/action/tester_taille.php -text diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php index a1843cd3303815aad5f2e0e8c2f29249b27aa182..32e808df09a89678173f6b1832bece24df02d5df 100644 --- a/ecrire/action/documenter.php +++ b/ecrire/action/documenter.php @@ -39,39 +39,12 @@ 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)) - return supprimer_document($id_document); - -} - -// http://doc.spip.org/@supprimer_document -function supprimer_document ($id_document) { - include_spip('inc/documents'); - - if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.$id_document)) - return false; - - spip_log("Suppression du document $id_document (".$doc['fichier'].")"); - - // Si c'est un document ayant une vignette, supprimer aussi la vignette - if ($doc['id_vignette']) { - supprimer_document($doc['id_vignette']); - sql_delete('spip_documents_liens', 'id_document='.$doc['id_vignette']); - } - - // Supprimer le fichier si le doc est local, - // et la copie locale si le doc est distant - if ($doc['distant'] == 'oui') { - include_spip('inc/distant'); - if ($local = copie_locale($doc['fichier'],'test')) - spip_unlink($local); + if (!sql_countsel('spip_documents_liens', 'id_document='.$id_document)){ + $supprimer_document = charger_fonction('supprimer_document','action'); + return $supprimer_document($id_document); } - else spip_unlink(get_spip_doc($doc['fichier'])); - - sql_delete('spip_documents', 'id_document='.$id_document); } - // http://doc.spip.org/@action_documenter_post function action_documenter_post($r) { diff --git a/ecrire/action/supprimer_document.php b/ecrire/action/supprimer_document.php new file mode 100644 index 0000000000000000000000000000000000000000..7be935d930fd365cdd42d878439efb1acfa60432 --- /dev/null +++ b/ecrire/action/supprimer_document.php @@ -0,0 +1,44 @@ +<?php + +/***************************************************************************\ + * SPIP, Systeme de publication pour l'internet * + * * + * Copyright (c) 2001-2008 * + * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * + * * + * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * + * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * +\***************************************************************************/ + +if (!defined("_ECRIRE_INC_VERSION")) return; + +// http://doc.spip.org/@supprimer_document +function action_supprimer_document_dist($id_document) { + if (!autoriser('supprimer','document',$id_document)) + return false; + + include_spip('inc/documents'); + if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.$id_document)) + return false; + + spip_log("Suppression du document $id_document (".$doc['fichier'].")"); + + // Si c'est un document ayant une vignette, supprimer aussi la vignette + if ($doc['id_vignette']) { + supprimer_document($doc['id_vignette']); + sql_delete('spip_documents_liens', 'id_document='.$doc['id_vignette']); + } + + // Supprimer le fichier si le doc est local, + // et la copie locale si le doc est distant + if ($doc['distant'] == 'oui') { + include_spip('inc/distant'); + if ($local = copie_locale($doc['fichier'],'test')) + spip_unlink($local); + } + else spip_unlink(get_spip_doc($doc['fichier'])); + + sql_delete('spip_documents', 'id_document='.$id_document); +} + +?> \ No newline at end of file diff --git a/ecrire/inc/legender.php b/ecrire/inc/legender.php index d99526c955d22503b50061a75e37e4bd8a6b5c8e..4b7ced1765a16f397e81fb70e6d32bafe9c87661 100644 --- a/ecrire/inc/legender.php +++ b/ecrire/inc/legender.php @@ -87,10 +87,8 @@ function legender_suppression($id, $id_document, $ancre, $s, $script, $supp, $ty // sans doute a revoir car le document serait alors peut-etre orphelin if ($id <= 0) return ''; - // si plusieurs liens sur le doc, pas de bouton de suppression - if (sql_countsel('spip_documents_liens', 'id_document='.$id_document) > 1) - return ''; + // la fonction 'supprimer_document' ne fait que de-associer si un document est utilise par ailleurs $texte = _T('icone_supprimer_document'); if (preg_match('/_edit$/', $script)) {