243c39a55db93d44671c3ae1648631438208c34d
[lhc/web/www.git] / www / ecrire / action / supprimer_rubrique.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2017 *
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 /**
14 * Action de suppression d'une rubrique
15 *
16 * @package SPIP\Core\Rubriques
17 **/
18
19 if (!defined('_ECRIRE_INC_VERSION')) {
20 return;
21 }
22
23 include_spip('inc/charsets'); # pour le nom de fichier
24
25 /**
26 * Effacer une rubrique
27 *
28 * @param null|int $id_rubrique
29 * @return void
30 */
31 function action_supprimer_rubrique_dist($id_rubrique = null) {
32
33 if (is_null($id_rubrique)) {
34 $securiser_action = charger_fonction('securiser_action', 'inc');
35 $id_rubrique = $securiser_action();
36 }
37
38 if (intval($id_rubrique)) {
39
40 sql_delete("spip_rubriques", "id_rubrique=" . intval($id_rubrique));
41 // Les admin restreints qui n'administraient que cette rubrique
42 // deviennent redacteurs
43 // (il y a sans doute moyen de faire ca avec un having)
44
45 $q = sql_select("id_auteur", "spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique));
46 while ($r = sql_fetch($q)) {
47 $id_auteur = $r['id_auteur'];
48 // degrader avant de supprimer la restriction d'admin
49 // section critique sur les droits
50 $n = sql_countsel("spip_auteurs_liens",
51 "objet='rubrique' AND id_objet!=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
52 if (!$n) {
53 include_spip('action/editer_auteur');
54 auteurs_set($id_auteur, array("statut" => '1comite'));
55 }
56 sql_delete("spip_auteurs_liens",
57 "objet='rubrique' AND id_objet=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
58 }
59 // menu_rubriques devra recalculer
60 effacer_meta("date_calcul_rubriques");
61
62 // Une rubrique supprimable n'avait pas le statut "publie"
63 // donc rien de neuf pour la rubrique parente
64 include_spip('inc/rubriques');
65 calculer_langues_rubriques();
66
67 // invalider les caches marques de cette rubrique
68 include_spip('inc/invalideur');
69 suivre_invalideur("id='rubrique/$id_rubrique'");
70 }
71 }