source: spip-zone/_core_/plugins/forum/action/instituer_forum.php @ 93640

Last change on this file since 93640 was 93640, checked in by marcimat@…, 5 years ago

Meilleure compatibilité avec PSR-2 et nos règles d'écriture, en appliquant
différents fix avec php-cs-fixers. Fixers appliqués ici :

'encoding', utf8
'eof_ending',
un saut de ligne en fin de fichier
'elseif', elseif plutôt que else if
'function_call_space',
espaces sur fonctions
'function_declaration', espaces sur fonctions
'function_typehint_space',
espaces sur fonctions
'linefeed', sauts de ligne \n uniquement
'lowercase_constants',
true, false, null en munuscule
'lowercase_keywords', mots clés PHP en lowercase
'method_argument_space',
espaces sur appels de fonctions
'multiple_use', use unique sur fonctions anonymes
'newline_after_open_tag',
ouverture de php… et c'est tout sur cette ligne
'operators_spaces', espaces de part et d'autres des opérateurs binaires
'parenthesis',
pas d'espace juste après parenthèse ouvrante, ou avant parenthèse fermante
'php_closing_tag', pas de fermeture de php
'short_tag',
tag PHP corrects
'trailing_spaces', pas d'espace qui traîne en fin de ligne
'visibility',
déclarer 'public / private / protected' sur les méthodes

File size: 3.3 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2014                                                *
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
13if (!defined("_ECRIRE_INC_VERSION")) {
14        return;
15}
16
17// http://code.spip.net/@action_instituer_forum_dist
18function action_instituer_forum_dist($arg = null) {
19
20        if (is_null($arg)) {
21                $securiser_action = charger_fonction('securiser_action', 'inc');
22                $arg = $securiser_action();
23        }
24
25        list($id_forum, $statut) = preg_split('/\W/', $arg);
26        $id_forum = intval($id_forum);
27        $row = sql_fetsel("*", "spip_forum", "id_forum=$id_forum");
28        if (!$row) {
29                return;
30        }
31
32        instituer_un_forum($statut, $row);
33}
34
35function instituer_un_forum($statut, $row) {
36
37        $id_forum = $row['id_forum'];
38        $old = $row['statut'];
39        // rien a faire si pas de changement de statut
40        if ($old == $statut) {
41                return;
42        }
43
44        // changer le statut de toute l'arborescence dependant de ce message
45        $id_messages = array($id_forum);
46        while ($id_messages) {
47                sql_updateq("spip_forum", array("statut" => $statut), sql_in("id_forum", $id_messages) . " AND statut = '$old'");
48
49                $id_messages = array_map('reset', sql_allfetsel("id_forum", "spip_forum", sql_in("id_parent", $id_messages)));
50        }
51
52        // Notifier de la publication du message, s'il etait 'prop'
53        if ($old == 'prop' and $statut == 'publie') {
54                if ($notifications = charger_fonction('notifications', 'inc')) {
55                        $notifications('forumvalide', $id_forum);
56                }
57        }
58
59        // mettre a jour la date du thread
60        // si publie, ou que tout le thread est prive,
61        // mettre la date du thread a 'maintenant' (date de publi du message)
62        // sinon prendre la date_heure du dernier message public
63        // c'est imparfait dans le cas ou les crayons ont ete utilises pour modifier ce message entre temps
64        // car la date_thread aurait cette derniere date alors que pas le message
65        // mais c'est au mieux de ce que l'on peut faire quand on depublie un SPAM ou supprime un message
66        if ($statut == 'publie' or $old == 'publie') {
67                if ($statut == 'publie'
68                        or !($date_thread = sql_getfetsel("date_heure", "spip_forum",
69                                "statut='publie' AND id_thread=" . $row['id_thread'], "", "date_heure DESC", "0,1"))
70                ) {
71                        $date_thread = date('Y-m-d H:i:s');
72                }
73                sql_updateq("spip_forum", array("date_thread" => $date_thread), "id_thread=" . $row['id_thread']);
74        }
75
76        // invalider les pages comportant ce forum
77        include_spip('inc/invalideur');
78        suivre_invalideur("id='forum/$id_forum'");
79        suivre_invalideur("id='" . $row['objet'] . "/" . $row['id_objet'] . "'");
80
81        // Reindexation du thread (par exemple)
82        pipeline('post_edition',
83                array(
84                        'args' => array(
85                                'table' => 'spip_forum',
86                                'table_objet' => 'forums',
87                                'spip_table_objet' => 'spip_forum',
88                                'type' => 'forum',
89                                'id_objet' => $id_forum,
90                                'action' => 'instituer',
91                                'statut_ancien' => $old,
92                        ),
93                        'data' => array('statut' => $statut)
94                )
95        );
96}
Note: See TracBrowser for help on using the repository browser.