Newer
Older
esj
a validé
include_ecrire('inc_meta.php3');
include_ecrire('inc_forum.php3');
include_ecrire("inc_abstract_sql.php3");
// Ce fichier inclus par inc-public a un comportement special
esj
a validé
// Voir commentaires dans celui-ci et dans inc-formulaire_forum
function prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre)
{
include_ecrire('inc_texte.php3');
include_ecrire('inc_filtres.php3');
include_ecrire('inc_mail.php3');
// Gestionnaire d'URLs
if (@file_exists("inc-urls.php3"))
include_local("inc-urls.php3");
else
include_local("inc-urls-".$GLOBALS['type_urls'].".php3");
$url = ereg_replace('^/', '', generer_url_article($id_article));
$adresse_site = lire_meta("adresse_site");
$nom_site_spip = lire_meta("nom_site");
$url = "$adresse_site/$url";
$parauteur = (strlen($auteur) <= 2) ? '' :
(" "
._T('forum_par_auteur',
array('auteur' => $auteur)) .
(!$email_auteur ? '' : (' <' . $email_auteur . '>')));
$courr = _T('form_forum_message_auto')."\n\n"
. _T('forum_poste_par',
array('parauteur' => $parauteur))."\n"
. _T('forum_ne_repondez_pas')."\n"
. $url
. "\n\n\n".$titre."\n\n".textebrut(propre($texte))
. "\n\n$nom_site_forum\n$url_site\n";
$sujet = "[$nom_site_spip] ["._T('forum_forum')."] $titre";
$result = spip_query("SELECT auteurs.email FROM spip_auteurs AS auteurs,
spip_auteurs_articles AS lien
WHERE lien.id_article='$id_article'
AND auteurs.id_auteur=lien.id_auteur");
while (list($email) = spip_fetch_array($result)) {
$email = trim($email);
if (strlen($email) < 3) continue;
envoyer_mail($email, $sujet, $courr);
$forum_id_article = intval($id_article);
$forum_id_rubrique = intval($id_rubrique);
$forum_id_forum = intval($id_forum);
$forum_id_breve = intval($id_breve);
$forum_id_syndic = intval($id_syndic);
esj
a validé
$r = spip_query("SELECT accepter_forum FROM spip_articles WHERE id_article=$forum_id_article");
$r = spip_fetch_array($r);
if ($r)
$forums_publics = $r['accepter_forum'];
else
$forums_publics = lire_meta("forums_publics");
} else {
$forums_publics = substr(lire_meta("forums_publics"),0,3);
if ($forums_publics == "abo") {
if ($auteur_session) {
$statut = $auteur_session['statut'];
if (!$statut OR $statut == '5poubelle') {
ask_php_auth(_T('forum_acces_refuse'),
_T('forum_cliquer_retour',
array('retour_forum' => $retour_forum)));
exit;
ask_php_auth(_T('forum_non_inscrit'),
_T('forum_cliquer_retour',
array('retour_forum' => $retour_forum)));
exit;
}
// Ne pas autoriser de changement de nom si forum sur abonnement
$auteur = $auteur_session['nom'];
$email_auteur = $auteur_session['email'];
if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) {
_T('forum_cliquer_retour',
array('retour_forum' => $retour_forum)));
exit;
$validation_finale = (strlen($confirmer) > 0
OR ($afficher_texte=='non' AND $ajouter_mot));
if ($validation_finale) {
// verifier droit (pour interdire de hack-poster sur des forums fermes ?)
include_ecrire("inc_admin.php3");
if (!(verifier_action_auteur("ajout_forum $forum_id_rubrique".
" $forum_id_forum $forum_id_article $forum_id_breve".
" $forum_id_syndic $alea", $hash))) {
header("Status: 404");
exit;
// Entrer le message dans la base
$id_message = spip_abstract_insert('forum',
"(date_heure)",
"(NOW())");
$statut =
($forums_publics == 'non') ? 'off' :
(($forums_publics == 'pri') ? 'prop' :
'publie');
if ($forum_id_forum > 0)
$id_thread = $forum_id_forum;
else
$id_thread = $id_message; # id_thread oblige INSERT puis UPDATE.
spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum,
id_rubrique =$forum_id_rubrique,
id_article = $forum_id_article,
id_breve = $forum_id_breve,
id_syndic = $forum_id_syndic,
id_auteur = $id_auteur,
id_thread = $id_thread,
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
titre = '".addslashes($titre)."',
texte = '".addslashes($texte)."',
nom_site = '".addslashes($nom_site_forum)."',
url_site = '".addslashes($url_site)."',
auteur = '".addslashes($auteur)."',
email_auteur = '".addslashes($email_auteur)."',
ip = '$REMOTE_ADDR',
statut = '$statut'
WHERE id_forum = $id_message
");
// calculer_threads();
// Entrer les mots-cles associes
if (is_array($ajouter_mot))
foreach ($ajouter_mot as $id_mot)
if ($id_mot = intval($id_mot))
spip_query("INSERT INTO spip_mots_forum (id_mot, id_forum)
VALUES ($id_mot, $id_message)");
// Prevenir les auteurs de l'article
if (lire_meta("prevenir_auteurs") == "oui"
AND ($afficher_texte != "non")
AND ($id_article = $forum_id_article))
prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre);
// Poser un cookie pour ne pas retaper le nom / email
$cookie_user = array('nom' => $auteur, 'email' => $email_auteur);
spip_setcookie('spip_forum_user', serialize($cookie_user));
//
// INVALIDATION DES CACHES LIES AUX FORUMS
//
include_ecrire('inc_invalideur.php3');
if ($statut == 'publie') {
suivre_invalideur ("id='id_forum/" .
calcul_index_forum($forum_id_article,
$forum_id_breve,
$forum_id_rubrique,
$forum_id_syndic) . "'");
}
$redirect = $retour_forum;