[SPIP] v3.2.7-->v3.2.9
[lhc/web/www.git] / www / plugins-dist / forum / formulaires / activer_forums_objet.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2020 *
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 * Gestion du formulaire de configuration indiquant où les forums peuvent
15 * être activés
16 *
17 * @package SPIP\Forum\Formulaires
18 **/
19 if (!defined("_ECRIRE_INC_VERSION")) {
20 return;
21 }
22
23 /**
24 * Récupérer le réglage des forums publics d'un objet
25 *
26 * @param int $id_objet
27 * @param string $objet
28 * @return bool
29 * true si les forums publics sont autorisés, false sinon
30 **/
31 function get_forums_publics($id_objet = 0, $objet = 'article') {
32
33 if ($objet == 'article' and $id_objet) {
34 $obj = sql_fetsel("accepter_forum", "spip_articles", "id_article=" . intval($id_objet));
35
36 if ($obj) {
37 return $obj['accepter_forum'];
38 }
39 } else { // dans ce contexte, inutile
40 return substr($GLOBALS['meta']["forums_publics"], 0, 3);
41 }
42
43 return $GLOBALS['meta']["forums_publics"];
44 }
45
46 /**
47 * Charger
48 *
49 * @param int $id_objet
50 * @param string $objet
51 * @return array
52 * Contexte du squelette du formulaire
53 */
54 function formulaires_activer_forums_objet_charger_dist($id_objet, $objet = 'article') {
55 if (!autoriser('modererforum', $objet, $id_objet)) {
56 return false;
57 }
58
59 include_spip('inc/presentation');
60 include_spip('base/abstract_sql');
61 $nb_forums = sql_countsel("spip_forum",
62 "objet=" . sql_quote($objet) . " AND id_objet=" . intval($id_objet) . " AND statut IN ('publie', 'off', 'prop', 'spam')");
63 $editable = ($objet == 'article') ? true : false;
64 if (!$editable and !$nb_forums) {
65 return false;
66 }
67
68 return array(
69 'editable' => $editable,
70 'objet' => $objet,
71 'id_objet' => $id_objet,
72 'accepter_forum' => get_forums_publics($id_objet, $objet),
73 '_suivi_forums' => $nb_forums ? _T('forum:icone_suivi_forum', array('nb_forums' => $nb_forums)) : "",
74 );
75
76 }
77
78 /**
79 * Traiter
80 *
81 * @param int $id_objet
82 * @param string $objet
83 * @return array
84 * Retours des traitements
85 */
86 function formulaires_activer_forums_objet_traiter_dist($id_objet, $objet = 'article') {
87 include_spip('inc/autoriser');
88 if ($objet == 'article' and autoriser('modererforum', $objet, $id_objet)) {
89 $statut = _request('accepter_forum');
90 include_spip('base/abstract_sql');
91 sql_updateq("spip_articles", array("accepter_forum" => $statut), "id_article=" . intval($id_objet));
92
93 if ($statut == 'abo') {
94 ecrire_meta('accepter_visiteurs', 'oui');
95 }
96 include_spip('inc/invalideur');
97 suivre_invalideur("id='$objet/$id_objet'");
98 }
99
100 return array('message_ok' => _T('config_info_enregistree'), 'editable' => true);
101 }