[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / plugins-dist / medias / action / supprimer_document.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14
15 // http://code.spip.net/@supprimer_document
16 function action_supprimer_document_dist($id_document=0) {
17 if (!$id_document){
18 $securiser_action = charger_fonction('securiser_action','inc');
19 $id_document = $securiser_action();
20 }
21 include_spip('inc/autoriser');
22 if (!autoriser('supprimer','document',$id_document)){
23 spip_log("Echec : Suppression document $id_document interdite",_LOG_ERREUR);
24 return false;
25 }
26
27 // si c'etait une vignette, modifier le document source !
28 if ($source = sql_getfetsel('id_document', 'spip_documents', 'id_vignette='.intval($id_document))){
29 include_spip('action/editer_document');
30 document_modifier($source,array("id_vignette" => 0));
31 }
32
33 include_spip('inc/documents');
34 if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.intval($id_document))){
35 spip_log("Echec : Suppression document $id_document : le document n'existe pas en base",_LOG_ERREUR);
36 return false;
37 }
38
39 spip_log("Suppression du document $id_document (".$doc['fichier'].")");
40 include_spip('action/editer_liens');
41
42 // Si c'est un document ayant une vignette, supprimer aussi la vignette
43 if ($doc['id_vignette']) {
44 action_supprimer_document_dist($doc['id_vignette']);
45 objet_dissocier(array('document'=>$doc['id_vignette']),'*');
46 }
47 // Si c'est un document ayant des documents annexes (sous-titre, ...)
48 // les supprimer aussi
49 $annexes = array_map('reset',sql_allfetsel("id_document","spip_documents_liens","objet='document' AND id_objet=".intval($id_document)));
50 foreach($annexes as $id){
51 action_supprimer_document_dist($id);
52 }
53
54 // dereferencer dans la base
55 objet_dissocier(array('document'=>$id_document),'*');
56 sql_delete('spip_documents', 'id_document='.intval($id_document));
57
58
59 // Supprimer le fichier si le doc est local,
60 // et la copie locale si le doc est distant
61 if ($doc['distant'] == 'oui') {
62 include_spip('inc/distant');
63 if ($local = _DIR_RACINE . copie_locale($doc['fichier'],'test'))
64 spip_unlink($local);
65 }
66 else
67 spip_unlink(get_spip_doc($doc['fichier']));
68
69 pipeline('post_edition',
70 array(
71 'args' => array(
72 'operation' => 'supprimer_document', // compat v<=2
73 'action' => 'supprimer_document',
74 'table' => 'spip_documents',
75 'id_objet' => $id_document
76 ),
77 'data' => null
78 )
79 );
80 return true;
81 }
82
83 ?>