[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_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-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 include_spip('inc/charsets'); # pour le nom de fichier
16
17 /**
18 * Effacer une rubrique
19 *
20 * http://doc.spip.org/@action_supprimer_dist
21 *
22 * @param null $id_rubrique
23 * @return void
24 */
25 function action_supprimer_rubrique_dist($id_rubrique=null) {
26
27 if (is_null($id_rubrique)){
28 $securiser_action = charger_fonction('securiser_action', 'inc');
29 $id_rubrique = $securiser_action();
30 }
31
32 if (intval($id_rubrique)){
33
34 sql_delete("spip_rubriques", "id_rubrique=".intval($id_rubrique));
35 // Les admin restreints qui n'administraient que cette rubrique
36 // deviennent redacteurs
37 // (il y a sans doute moyen de faire ca avec un having)
38
39 $q = sql_select("id_auteur", "spip_auteurs_liens", "objet='rubrique' AND id_objet=".intval($id_rubrique));
40 while ($r = sql_fetch($q)) {
41 $id_auteur = $r['id_auteur'];
42 // degrader avant de supprimer la restriction d'admin
43 // section critique sur les droits
44 $n = sql_countsel("spip_auteurs_liens", "objet='rubrique' AND id_objet!=".intval($id_rubrique)." AND id_auteur=".intval($id_auteur));
45 if (!$n) {
46 include_spip('action/editer_auteur');
47 auteurs_set($id_auteur,array("statut" => '1comite'));
48 }
49 sql_delete("spip_auteurs_liens", "objet='rubrique' AND id_objet=".intval($id_rubrique)." AND id_auteur=".intval($id_auteur));
50 }
51 // menu_rubriques devra recalculer
52 effacer_meta("date_calcul_rubriques");
53
54 // Une rubrique supprimable n'avait pas le statut "publie"
55 // donc rien de neuf pour la rubrique parente
56 include_spip('inc/rubriques');
57 calculer_langues_rubriques();
58
59 // invalider les caches marques de cette rubrique
60 include_spip('inc/invalideur');
61 suivre_invalideur("id='rubrique/$id_rubrique'");
62 }
63 }
64
65 ?>