123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- /***************************************************************************\
- * SPIP, Systeme de publication pour l'internet *
- * *
- * Copyright (c) 2001-2014 *
- * 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://code.spip.net/@supprimer_document
- function action_supprimer_document_dist($id_document=0) {
- if (!$id_document){
- $securiser_action = charger_fonction('securiser_action','inc');
- $id_document = $securiser_action();
- }
- include_spip('inc/autoriser');
- if (!autoriser('supprimer','document',$id_document)){
- spip_log("Echec : Suppression document $id_document interdite",_LOG_ERREUR);
- return false;
- }
- // si c'etait une vignette, modifier le document source !
- if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette='.intval($id_document))){
- include_spip('action/editer_document');
- document_modifier($source,array("id_vignette" => 0));
- }
- include_spip('inc/documents');
- if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.intval($id_document))){
- spip_log("Echec : Suppression document $id_document : le document n'existe pas en base",_LOG_ERREUR);
- return false;
- }
- spip_log("Suppression du document $id_document (".$doc['fichier'].")");
- include_spip('action/editer_liens');
- // Si c'est un document ayant une vignette, supprimer aussi la vignette
- if ($doc['id_vignette']) {
- action_supprimer_document_dist($doc['id_vignette']);
- objet_dissocier(array('document'=>$doc['id_vignette']),'*');
- }
- // Si c'est un document ayant des documents annexes (sous-titre, ...)
- // les supprimer aussi
- $annexes = array_map('reset',sql_allfetsel("id_document","spip_documents_liens","objet='document' AND id_objet=".intval($id_document)));
- foreach($annexes as $id){
- action_supprimer_document_dist($id);
- }
- // dereferencer dans la base
- objet_dissocier(array('document'=>$id_document),'*');
- sql_delete('spip_documents', 'id_document='.intval($id_document));
- // 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 = _DIR_RACINE . copie_locale($doc['fichier'],'test'))
- spip_unlink($local);
- }
- else
- spip_unlink(get_spip_doc($doc['fichier']));
- pipeline('post_edition',
- array(
- 'args' => array(
- 'operation' => 'supprimer_document', // compat v<=2
- 'action' => 'supprimer_document',
- 'table' => 'spip_documents',
- 'id_objet' => $id_document
- ),
- 'data' => null
- )
- );
- return true;
- }
- ?>
|