source: spip-zone/_plugins_/_stable_/moderation_moderee/fonctions_mod.php @ 22749

Last change on this file since 22749 was 22749, checked in by prigent.yohann@…, 13 years ago

Refonte du plugin (en tout cas j'essaye).

File size: 4.0 KB
Line 
1function forum_insert_base($c, $id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique, $statut, $retour)
2{
3        $afficher_texte = (_request('afficher_texte') <> 'non');
4        $ajouter_mot = _request('ajouter_mot');
5
6        // Antispam : si 'nobot' a ete renseigne, ca ne peut etre qu'un bot
7        if (strlen(_request('nobot'))) {
8                tracer_erreur_forum('champ interdit (nobot) rempli');
9                return false;
10        }
11
12        //  Si forum avec previsu sans bon hash de securite, echec silencieux
13        if ($afficher_texte AND forum_insert_noprevisu()) {
14                return false;
15        }
16
17        if (array_reduce($_POST, 'reduce_strlen', (20 * 1024)) < 0) {
18                ask_php_auth(_T('forum_message_trop_long'),
19                        _T('forum_cliquer_retour',
20                                array('retour_forum' => $retour)));
21        }
22
23        // Entrer le message dans la base
24        $id_message = sql_insertq('spip_forum', array('date_heure'=> 'NOW()'));
25
26        if ($id_forum>0) {
27                $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum = $id_forum");
28        }
29        else
30                $id_thread = $id_message; # id_thread oblige INSERT puis UPDATE.
31
32        // id_rubrique est parfois passee pour les articles, on n'en veut pas
33        if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic))
34                $id_rubrique = 0;
35
36        // Entrer les cles de jointures et assimilees
37global $visiteur_session;
38        if ($visiteur_session) {
39        $moderation_plug_admin=$GLOBALS['meta']["moderation_plug_admin"];
40        $moderation_plug_redac=$GLOBALS['meta']["moderation_plug_redac"];
41        $moderation_plug_visit=$GLOBALS['meta']["moderation_plug_visit"];
42        $autstat = $visiteur_session['statut'];
43        if ($autstat == '0minirezo' AND $moderation_plug_admin == 'oui') {
44                sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => 'publie'), "id_forum = $id_message");
45                }
46        else if ($autstat == '1comite' AND $moderation_plug_redac == 'oui') {
47                sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => 'publie'), "id_forum = $id_message");
48        }
49        else if ($autstat == '6forum' AND $moderation_plug_visit == 'oui')  {
50                sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => 'publie'), "id_forum = $id_message");
51                }
52        else if (!$autstat) {   
53                sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum = $id_message");
54                }
55        else {
56                sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum = $id_message");
57        }
58        }
59        // Entrer les mots-cles associes
60        if ($ajouter_mot) mots_du_forum($ajouter_mot, $id_message);
61
62        //
63        // Entree du contenu et invalidation des caches
64        //
65        include_spip('inc/modifier');
66        revision_forum($id_message, $c);
67
68        // Ajouter un document
69        if (isset($_FILES['ajouter_document'])
70        AND $_FILES['ajouter_document']['tmp_name']) {
71                $ajouter_documents = charger_fonction('ajouter_documents', 'inc');
72                $ajouter_documents(
73                        $_FILES['ajouter_document']['tmp_name'],
74                        $_FILES['ajouter_document']['name'], 'forum', $id_message,
75                        'document', 0, $documents_actifs);
76                // supprimer le temporaire et ses meta donnees
77                spip_unlink($_FILES['ajouter_document']['tmp_name']);
78                spip_unlink(preg_replace(',\.bin$,',
79                        '.txt', $_FILES['ajouter_document']['tmp_name']));
80        }
81
82        // Notification
83        if ($notifications = charger_fonction('notifications', 'inc'))
84                $notifications('forumposte', $id_message);
85
86        return $id_message;
87}
88
89// calcul de l'adresse de retour en cas d'echec du POST
90// mais la veritable adresse de retour sera calculee apres insertion
Note: See TracBrowser for help on using the repository browser.