Commit | Line | Data |
---|---|---|
c495c100 P |
1 | <?php |
2 | ||
3 | /***************************************************************************\ | |
4 | * SPIP, Systeme de publication pour l'internet * | |
5 | * * | |
6 | * Copyright (c) 2001-2007 * | |
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 | include_spip('inc/charsets'); # pour le nom de fichier | |
16 | include_spip('base/abstract_sql'); | |
17 | ||
18 | // Effacer un doc (et sa vignette) | |
19 | // http://doc.spip.org/@action_supprimer_dist | |
20 | function action_supprimer_dist() { | |
21 | ||
22 | $securiser_action = charger_fonction('securiser_action', 'inc'); | |
23 | $arg = $securiser_action(); | |
24 | ||
25 | preg_match('/^(\w+)\W(.*)$/', $arg, $r); | |
26 | $var_nom = 'action_supprimer_' . $r[1]; | |
27 | if (function_exists($var_nom)) { | |
28 | spip_log("$var_nom $r[2]"); | |
29 | $var_nom($r[2]); | |
30 | } | |
31 | else | |
32 | spip_log("action supprimer $arg incompris"); | |
33 | } | |
34 | ||
35 | // Ne pas confondre cette fonction avec celle au pluriel ci-dessous | |
36 | ||
37 | // http://doc.spip.org/@action_supprimer_document | |
38 | function action_supprimer_document($arg) { | |
39 | global $redirect; | |
40 | supprimer_document_et_vignette(intval($arg)); | |
41 | $redirect = rawurldecode($redirect); | |
42 | if (strpos($redirect, 'id_rubrique=')) { | |
43 | include_spip('inc/rubriques'); | |
44 | calculer_rubriques(); | |
45 | } | |
46 | redirige_par_entete($redirect); | |
47 | } | |
48 | ||
49 | ||
50 | // http://doc.spip.org/@action_supprimer_rubrique | |
51 | function action_supprimer_rubrique($id_rubrique) | |
52 | { | |
53 | spip_query("DELETE FROM spip_rubriques WHERE id_rubrique=$id_rubrique"); | |
54 | // Les admin restreints qui n'administraient que cette rubrique | |
55 | // deviennent redacteurs | |
56 | // (il y a sans doute moyen de faire ca avec un having) | |
57 | ||
58 | $q = spip_query("SELECT id_auteur FROM spip_auteurs_rubriques WHERE id_rubrique=$id_rubrique"); | |
59 | ||
60 | while ($r = spip_fetch_array($q)) { | |
61 | $id_auteur = $r['id_auteur']; | |
62 | spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_rubrique=$id_rubrique AND id_auteur=$id_auteur"); | |
63 | $n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_rubriques WHERE id_auteur=$id_auteur LIMIT 1")); | |
64 | if (!$n) | |
65 | spip_query("UPDATE spip_auteurs SET statut='1comite' WHERE id_auteur=$id_auteur"); | |
66 | } | |
67 | ||
68 | include_spip('inc/rubriques'); | |
69 | calculer_rubriques(); | |
70 | calculer_langues_rubriques(); | |
71 | ||
72 | // invalider les caches marques de cette rubrique | |
73 | include_spip('inc/invalideur'); | |
74 | suivre_invalideur("id='id_rubrique/$id_rubrique'"); | |
75 | ||
76 | } | |
77 | ||
78 | // http://doc.spip.org/@supprimer_document_et_vignette | |
79 | function supprimer_document_et_vignette($arg) | |
80 | { | |
81 | $result = spip_query("SELECT id_vignette, fichier FROM spip_documents WHERE id_document=$arg"); | |
82 | if ($row = spip_fetch_array($result)) { | |
83 | $fichier = $row['fichier']; | |
84 | $id_vignette = $row['id_vignette']; | |
85 | spip_query("DELETE FROM spip_documents WHERE id_document=$arg"); | |
86 | spip_query("UPDATE spip_documents SET id_vignette=0 WHERE id_vignette=$arg"); | |
87 | spip_query("DELETE FROM spip_documents_articles WHERE id_document=$arg"); | |
88 | spip_query("DELETE FROM spip_documents_rubriques WHERE id_document=$arg"); | |
89 | spip_query("DELETE FROM spip_documents_breves WHERE id_document=$arg"); | |
90 | @unlink($fichier); | |
91 | ||
92 | if ($id_vignette > 0) { | |
93 | $result = spip_query("SELECT id_vignette, fichier FROM spip_documents WHERE id_document=$id_vignette"); | |
94 | ||
95 | if ($row = spip_fetch_array($result)) { | |
96 | $fichier = $row['fichier']; | |
97 | @unlink($fichier); | |
98 | } | |
99 | spip_query("DELETE FROM spip_documents WHERE id_document=$id_vignette"); | |
100 | spip_query("DELETE FROM spip_documents_articles WHERE id_document=$id_vignette"); | |
101 | spip_query("DELETE FROM spip_documents_rubriques WHERE id_document=$id_vignette"); | |
102 | spip_query("DELETE FROM spip_documents_breves WHERE id_document=$id_vignette"); | |
103 | } | |
104 | } | |
105 | } | |
106 | ?> |