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

include_ecrire('inc_texte.php3');
include_ecrire('inc_filtres.php3');
include_ecrire('inc_mail.php3');

if (file_exists("inc-urls.php3")) {
        include_local ("inc-urls.php3");
}
else {
        include_local ("inc-urls-dist.php3");
}
// fichier inclus par inc-public.
// Voir commentaires dans celui-ci et dans inc-forum

  $retour_forum = rawurldecode($retour);
  $forum_id_article = intval($forum_id_article);
  $forum_id_rubrique = intval($forum_id_rubrique);
  $forum_id_parent = intval($forum_id_parent);
  $forum_id_breve = intval($forum_id_breve);
  $forum_id_syndic = intval($forum_id_syndic);
  $slash_texte = addslashes($texte);
  $slash_titre = addslashes($titre);
  $slash_nom_site_forum = addslashes($nom_site_forum);
  $slash_url_site = addslashes($url_site);
  $id_message = intval($id_message);
  if (!$id_auteur) $id_auteur = $GLOBALS['auteur_session']['id_auteur'];
  if ($forum_id_article) {
    if ($obj = spip_fetch_object(spip_query("
SELECT accepter_forum
FROM spip_articles
WHERE id_article=$forum_id_article")))
       $forums_publics = $obj->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') {
	die ("<h4>"._T('forum_acces_refuse'). "</h4>" . 
	     _T('forum_cliquer_retour',
		array('retour_forum' => $retour_forum)). "<p>");
      }
    }
    else {
      die ("<h4>"._T('forum_non_inscrit'). "</h4>" .
	   _T('forum_cliquer_retour',
	      array('retour_forum' => $retour_forum))."<p>");
    }
    // Ne pas autoriser de changement de nom si forum sur abonnement
    $auteur = $auteur_session['nom'];
    $email_auteur = $auteur_session['email'];
  } 
  $slash_auteur = addslashes($auteur);
  $slash_email_auteur = addslashes($email_auteur);

  if ((strlen($slash_texte) + strlen($slash_titre) + strlen($slash_nom_site_forum) + strlen($slash_url_site) + strlen($slash_auteur) + strlen($slash_email_auteur)) > 20 * 1024) {
      die ("<h4>"._T('forum_message_trop_long')."</h4>\n" .
	   _T('forum_cliquer_retour', array('retour_forum' => $retour_forum))."<p>");
	}

  spip_query("DELETE FROM spip_mots_forum WHERE id_forum='$id_message'");
  if ($ajouter_mot){
    for (reset($ajouter_mot); $key = key($ajouter_mot); next($ajouter_mot)){
      $les_mots .= ",".join($ajouter_mot[$key],",");
    }
    $les_mots = explode(",", $les_mots);
    for ($index = 0; $index < count($les_mots); $index++){
      $le_mot = $les_mots[$index];
      if ($le_mot > 0)
	spip_query("INSERT INTO spip_mots_forum (id_mot, id_forum) VALUES ('$le_mot', '$id_message')");
    }
  }

  $validation_finale = (strlen($confirmer) > 0 OR
			($afficher_texte=='non' AND $ajouter_mot));
  $statut = ((!$validation_finale) ? 'redac' : 
			(($forums_publics == 'non') ? 'off' :
			 (($forums_publics == 'pri') ? 'prop' : 'publie')));
  spip_query("
UPDATE	spip_forum
SET	id_parent = $forum_id_parent,
	id_rubrique =$forum_id_rubrique,
	id_article = $forum_id_article,
	id_breve = $forum_id_breve,
	id_syndic = \"$forum_id_syndic\",
	id_auteur = \"$id_auteur\",
	date_heure = NOW(),
	titre = \"$slash_titre\",
	texte = \"$slash_texte\",
	nom_site = \"$slash_nom_site_forum\",
	url_site = \"$slash_url_site\",
	auteur = \"$slash_auteur\",
	email_auteur = \"$slash_email_auteur\",
	ip = \"$REMOTE_ADDR\",
	statut = \"$statut\"
WHERE	id_forum = '$id_message'
");

if ($validation_finale)
 {
    include_ecrire("inc_admin.php3");
    if (!(verifier_action_auteur("ajout_forum $forum_id_rubrique $forum_id_parent $forum_id_article $forum_id_breve $forum_id_syndic $alea",
				 $hash)))
      {header("Status: 404");exit;}
    else
    {
	// 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));

		// Envoi d'un mail aux auteurs
	$prevenir_auteurs = lire_meta("prevenir_auteurs");
	if ($prevenir_auteurs == "oui" AND $afficher_texte != "non") {
	  if ($id_article = $forum_id_article) {
	    $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";
	    $courr = _T('form_forum_message_auto')."\n\n";
	    $parauteur = '';
	    if (strlen($auteur) > 2) {
	      $parauteur = " "._T('forum_par_auteur', array('auteur' => $auteur));
	      if ($email_auteur) $parauteur .= " <$email_auteur>";
	    }
	    $courr .= _T('forum_poste_par', array('parauteur' => $parauteur))."\n";
	    $courr .= _T('forum_ne_repondez_pas')."\n";
	    $courr .= "$url\n";
	    $courr .= "\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";
	    $query = "SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_articles AS lien ".
	      "WHERE lien.id_article='$id_article' AND auteurs.id_auteur=lien.id_auteur";
	    $result = spip_query($query);
	    
	    while ($row = spip_fetch_array($result)) {
	      $email_auteur = trim($row["email"]);
	      if (strlen($email_auteur) < 3) continue;
	      envoyer_mail($email_auteur, $sujet, $courr);
	    }
	  }
	}
	// destruction du formulaire (on pourrait leconserver
	// car il ne contient rien de spe'cifique (php dynamique)
	//  mais il est statistiquement peu re'utilise')
	// destruction de la page ayant de'clenche' le formulaire si non mode're'

	$cache = rawurldecode($cache);

esj's avatar
esj a validé
	if (file_exists('inc-invalideur.php3'))
	  {
	    include('inc-invalideur.php3');
	    applique_invalideur(($statut == 'publie') ?
				array($var_cache, $cache) :
				array($var_cache));
	      }
	else // minimum vital 
	  {
	    @unlink($var_cache);
	    if ($statut == 'publie') @unlink($cache);
	  }
    }
    $redirect = $retour_forum;
 }
?>