Skip to content
Extraits de code Groupes Projets
inc-messforum.php3 5,53 ko
Newer Older
esj's avatar
esj a validé
<?php

include_ecrire('inc_forum.php3');
include_ecrire("inc_abstract_sql.php3");

esj's avatar
esj a validé

Fil's avatar
Fil a validé
// Ce fichier inclus par inc-public a un comportement special
// Voir commentaires dans celui-ci et dans inc-formulaire_forum
Fil's avatar
Fil a validé

Fil's avatar
Fil a validé
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";
esj's avatar
esj a validé
	$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";
esj's avatar
esj a validé
	$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");

esj's avatar
esj a validé
	while (list($email) = spip_fetch_array($result)) {
		$email = trim($email);
		if (strlen($email) < 3) continue;
		envoyer_mail($email, $sujet, $courr);
Fil's avatar
Fil a validé
}


Fil's avatar
Fil a validé
// Recuperation des donnees
Fil's avatar
Fil a validé
$retour_forum = rawurldecode($retour);
Fil's avatar
Fil a validé
$id_article = intval($id_article);
$id_rubrique = intval($id_rubrique);
$id_forum = intval($id_forum);
$id_breve = intval($id_breve);
$id_syndic = intval($id_syndic);
Fil's avatar
Fil a validé

Fil's avatar
Fil a validé
// initialisation de l'eventuel visiteur connecte
Fil's avatar
Fil a validé
if (!$id_auteur)
esj's avatar
esj a validé
	$id_auteur = intval($auteur_session['id_auteur']);
Fil's avatar
Fil a validé

Fil's avatar
Fil a validé
// chercher le statut du forum
if ($id_article) {
	$r = spip_query("SELECT accepter_forum FROM spip_articles WHERE id_article=$id_article");
	if ($r)
		$forums_publics = $r['accepter_forum'];
Fil's avatar
Fil a validé
	else
		$forums_publics = lire_meta("forums_publics");
} else {
	$forums_publics = substr(lire_meta("forums_publics"),0,3);
esj's avatar
esj a validé
}
Fil's avatar
Fil a validé

if ($forums_publics == "abo") {
	if ($auteur_session) {
		$statut = $auteur_session['statut'];
		if (!$statut OR $statut == '5poubelle') {
esj's avatar
esj a validé
			ask_php_auth(_T('forum_acces_refuse'),
				     _T('forum_cliquer_retour',
					array('retour_forum' => $retour_forum)));
			exit;		  
Fil's avatar
Fil a validé
		}
	}
	else {
esj's avatar
esj a validé
		ask_php_auth(_T('forum_non_inscrit'),
			     _T('forum_cliquer_retour',
				array('retour_forum' => $retour_forum)));
		exit;		  
Fil's avatar
Fil a validé
	}

	// Ne pas autoriser de changement de nom si forum sur abonnement
	$auteur = $auteur_session['nom'];
	$email_auteur = $auteur_session['email'];
Fil's avatar
Fil a validé
}

Fil's avatar
Fil a validé

Fil's avatar
Fil a validé
// trop court ?
if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) {
esj's avatar
esj a validé
	ask_php_auth(_T('forum_message_trop_long'),
		_T('forum_cliquer_retour',
		array('retour_forum' => $retour_forum)));
	exit;
Fil's avatar
Fil a validé
// validation finale du post ?
if (strlen($confirmer) > 0
OR ($afficher_texte=='non' AND $ajouter_mot)) {
	// prevoir le redirect
	$redirect = $retour_forum;

	// Verifier hash securite
	include_ecrire("inc_admin.php3");
	if (!verifier_action_auteur("ajout_forum $id_rubrique".
Fil's avatar
Fil a validé
	" $id_forum $id_article $id_breve".
	" $id_syndic $alea", $hash))
		return; 	# echec silencieux du POST

	// verifier fichier lock
	$alea = preg_replace('/[^0-9]/', '', $alea);
	if (!file_exists($f = _DIR_SESSIONS."forum_$alea.lck"))
		return; # echec silencieux du POST
	unlink($f);
	// 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 ($id_forum)
		list($id_thread) = spip_fetch_array(spip_query(
		"SELECT id_thread FROM spip_forum WHERE id_forum = $id_forum"));
	else
		$id_thread = $id_message; # id_thread oblige INSERT puis UPDATE.

Fil's avatar
Fil a validé
	spip_query("UPDATE spip_forum SET id_parent = $id_forum,
	id_rubrique = $id_rubrique,
Fil's avatar
Fil a validé
	id_article = $id_article,
	id_breve = $id_breve,
	id_syndic = $id_syndic,
	id_thread = $id_thread,
esj's avatar
esj a validé
	date_heure = NOW(),
	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")
Fil's avatar
Fil a validé
	AND ($id_article = $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/" .
Fil's avatar
Fil a validé
			calcul_index_forum($id_article,
				$id_breve,
				$id_rubrique,
				$id_syndic) . "'");
Fil's avatar
Fil a validé
}

esj's avatar
esj a validé
?>