source: spip-zone/_core_/plugins/forum/formulaires/forum_prive.php @ 53166

Last change on this file since 53166 was 53166, checked in by kent1@…, 8 years ago

Montrons le bon exemple :

if (!defined('_ECRIRE_INC_VERSION')) return; partout

File size: 5.7 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2011                                                *
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")) return;
14
15include_spip('inc/forum');
16
17function formulaires_forum_prive_charger_dist($objet, $id_objet, $id_forum, $afficher_previsu, $statut, $retour='') {
18
19        if (!$titre = forum_recuperer_titre($objet,$id_objet,$id_forum,false))
20                return false;
21
22        $primary = id_table_objet($objet);
23        $table = table_objet($objet);
24
25        // Tableau des valeurs servant au calcul d'une signature de securite.
26        // Elles seront placees en Input Hidden pour que inc/forum_insert
27        // recalcule la meme chose et verifie l'identite des resultats.
28        // Donc ne pas changer la valeur de ce tableau entre le calcul de
29        // la signature et la fabrication des Hidden
30        // Faire attention aussi a 0 != ''
31        $ids = array();
32        $ids[$primary] = ($x = intval($id_objet)) ? $x : '';
33        $ids['id_objet'] = ($x = intval($id_objet)) ? $x : '';
34        $ids['objet'] = $objet;
35        $ids['id_forum'] = ($x = intval($id_forum)) ? $x : '';
36
37        // ne pas mettre '', sinon le squelette n'affichera rien.
38        $previsu = ' ';
39
40        // pour les hidden
41        $script_hidden = "";
42        foreach ($ids as $id => $v)
43                $script_hidden .= "<input type='hidden' name='$id' value='$v' />";
44               
45        $config = array();
46        foreach(array('afficher_barre','forum_titre','forums_texte','forums_urlref') as $k)
47                $config[$k] = ' ';
48
49        return array(
50                'nom_site' => '',
51                'table' => $table,
52                'texte' => '',
53                'config' => $config,
54                'titre' => $titre,
55                '_hidden' => $script_hidden, # pour les variables hidden
56                'url_site' => "http://",
57                'id_forum' => $id_forum, // passer id_forum au formulaire pour lui permettre d'afficher a quoi l'internaute repond
58                '_sign'=>implode('_',$ids),
59                '_autosave_id' => $ids,
60        );
61}
62
63
64function formulaires_forum_prive_verifier_dist($objet, $id_objet, $id_forum, $afficher_previsu, $statut, $retour='') {
65        include_spip('inc/acces');
66        include_spip('inc/texte');
67        include_spip('inc/forum');
68        include_spip('inc/session');
69        include_spip('base/abstract_sql');
70
71        $erreurs = array();
72
73        if (strlen($texte = _request('texte')) < 10 AND $GLOBALS['meta']['forums_texte'] == 'oui')
74                $erreurs['texte'] = _T('forum:forum_attention_dix_caracteres');
75        else if (defined('_FORUM_LONGUEUR_MAXI')
76        AND _FORUM_LONGUEUR_MAXI > 0
77        AND strlen($texte) > _FORUM_LONGUEUR_MAXI)
78                $erreurs['texte'] = _T('forum:forum_attention_trop_caracteres',
79                        array(
80                                'compte' => strlen($texte),
81                                'max' => _FORUM_LONGUEUR_MAXI
82                        ));
83
84        if (strlen($titre=_request('titre')) < 3
85        AND $GLOBALS['meta']['forums_titre'] == 'oui')
86                $erreurs['titre'] = _T('forum:forum_attention_trois_caracteres');
87
88        if (array_reduce($_POST, 'reduce_strlen', (20 * 1024)) < 0) {
89                $erreurs['erreur_message'] = _T('forum:forum_message_trop_long');
90        }
91
92        if (!count($erreurs) AND !_request('confirmer_previsu_forum')){
93                if ($afficher_previsu != 'non') {
94                        $previsu = inclure_forum_prive_previsu($texte, $titre, _request('url_site'), _request('nom_site'), _request('ajouter_mot'));
95                        $erreurs['previsu'] = $previsu;
96                }
97        }
98
99        return $erreurs;
100}
101
102
103function inclure_forum_prive_previsu($texte,$titre, $url_site, $nom_site, $ajouter_mot, $doc=""){
104        $bouton = _T('forum:forum_message_definitif');
105        include_spip('public/assembler');
106        include_spip('public/composer');
107        // supprimer les <form> de la previsualisation
108        // (sinon on ne peut pas faire <cadre>...</cadre> dans les forums)
109        return preg_replace("@<(/?)form\b@ism",
110                            '<\1div',
111                inclure_balise_dynamique(array('formulaires/inc-forum_prive_previsu',
112                      0,
113                      array(
114                        'titre' => safehtml(typo($titre)),
115                        'texte' => safehtml(propre($texte)),
116                        'notes' => safehtml(calculer_notes()),
117                        'url_site' => vider_url($url_site),
118                        'nom_site' => safehtml(typo($nom_site)),
119                        'ajouter_mot' => (is_array($ajouter_mot) ? $ajouter_mot : array($ajouter_mot)),
120                        'ajouter_document' => $doc,
121                        'erreur' => $erreur,
122                        'bouton' => $bouton
123                        )
124                                               ),
125                                         false));
126}
127
128
129function formulaires_forum_prive_traiter_dist($objet, $id_objet, $id_forum, $afficher_previsu, $statut, $retour='') {
130
131        $forum_insert = charger_fonction('forum_insert', 'inc');
132        $id_reponse = $forum_insert($objet, $id_objet, $id_forum,$statut);
133        if ($id_reponse){
134                // En cas de retour sur (par exemple) {#SELF}, on ajoute quand
135                // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite
136                if ($retour){
137                        if (!strpos($retour, '#'))
138                                $retour .= '#forum'.$id_reponse;
139                }
140                else {
141                        // le retour par defaut envoie sur le thread, ce qui permet
142                        // de traiter elegamment le cas des forums moderes a priori.
143                        // Cela assure aussi qu'on retrouve son message dans le thread
144                        // dans le cas des forums moderes a posteriori, ce qui n'est
145                        // pas plus mal.
146                        if (function_exists('generer_url_forum')) {
147                                $retour = generer_url_forum($id_reponse);
148                        }
149                        else {
150                                $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum='.$id_reponse);
151                                spip_log('id_thread='.$thread['id_thread'], 'forum');
152                                $retour = generer_url_entite($thread['id_thread'], 'forum');
153                        }
154                }
155
156                $res = array('redirect'=>$retour,'id_forum'=>$id_forum);
157        }
158        else
159                $res = array('message_erreur'=>_T('forum:erreur_enregistrement_message'));
160
161        return $res;
162}
163
164
165?>
Note: See TracBrowser for help on using the repository browser.