[SPIP] +2.1.12
[velocampus/web/www.git] / www / ecrire / action / documenter.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2011 *
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
16 // Comme son nom ne l'indique pas cette action consiste a SUPPRIMER un document
17
18 // http://doc.spip.org/@action_documenter_dist
19 function action_documenter_dist()
20 {
21 $securiser_action = charger_fonction('securiser_action', 'inc');
22 $arg = $securiser_action();
23
24 if (!preg_match(",^(-?)(\d+)\W(\w+)(\W(\d+))?$,", $arg, $r))
25 spip_log("action_documenter $arg pas compris");
26 else action_documenter_post($r);
27 }
28
29 // http://doc.spip.org/@supprimer_lien_document
30 function supprimer_lien_document($id_document, $objet, $id_objet) {
31 if (!$id_document = intval($id_document))
32 return false;
33
34 // D'abord on ne supprime pas, on dissocie
35 sql_delete("spip_documents_liens",
36 $z = "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_document=".$id_document);
37
38 // Si c'est une vignette, l'eliminer du document auquel elle appartient
39 sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document);
40
41 pipeline('post_edition',
42 array(
43 'args' => array(
44 'operation' => 'delier_document',
45 'table' => 'spip_documents',
46 'id_objet' => $id_document,
47 'objet' => $objet,
48 'id' => $id_objet
49 ),
50 'data' => null
51 )
52 );
53
54 // On supprime ensuite s'il est orphelin
55 // (autorisation verifiee dans l'action)
56 $supprimer_document = charger_fonction('supprimer_document','action');
57 return $supprimer_document($id_document);
58 }
59
60 // http://doc.spip.org/@action_documenter_post
61 function action_documenter_post($r)
62 {
63 // - sign indique le portfolio image ou document, dans le cas de
64 // la page exec=articles
65 // - id est l'id_objet (id_article ou id_rubrique etc)
66 // - type est 'article' (ou 'rubrique')
67 // - id_document le doc a supprimer ou a delier de l'objet
68 // SI VIDE, on supprime tous les documents du type SIGN
69 // (bouton "supprimer tous les documents")
70 list(, $sign, $id, $type, ,$id_document) = $r;
71
72 if ($id_document) {
73 supprimer_lien_document($id_document, $type, $id);
74 }
75 else {
76 $obj = "id_objet=".intval($id)." AND objet=".sql_quote($type);
77 $typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $sign ? '' : 'NOT');
78
79 $s = sql_select('docs.id_document AS id_doc', "spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document", "$obj AND docs.mode='document' AND $typdoc");
80 while ($t = sql_fetch($s)) {
81 supprimer_lien_document($t['id_doc'], $type, $id);
82 }
83 }
84
85 if ($type == 'rubrique') {
86 include_spip('inc/rubriques');
87 depublier_branche_rubrique_if($id);
88 }
89 }
90 ?>