| [ PHPXref.com ] | [ Generated: Sun Jul 20 20:25:42 2008 ] | [ SPIP 1.8.3 ] |
| [ Index ] [ Variables ] [ Functions ] [ Classes ] [ Constants ] [ Statistics ] | ||
[Summary view] [Print] [Text view]
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2005 * 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 13 14 if (!defined("_ECRIRE_INC_VERSION")) return; 15 16 include_ecrire('inc_meta.php3'); 17 include_ecrire('inc_forum.php3'); 18 include_ecrire('inc_filtres.php3'); 19 include_ecrire("inc_abstract_sql.php3"); 20 include_local(_FILE_CONNECT); 21 22 // Ce fichier inclus par inc-public a un comportement special 23 // Voir commentaires dans celui-ci et dans inc-formulaire_forum 24 25 function prevenir_auteurs($auteur, $email_auteur, $id_forum, $id_article, $texte, $titre, $statut) { 26 global $nom_site_forum, $url_site; 27 include_ecrire('inc_texte.php3'); 28 include_ecrire('inc_filtres.php3'); 29 include_ecrire('inc_mail.php3'); 30 // Gestionnaire d'URLs 31 if (@file_exists("inc-urls.php3")) 32 include_local("inc-urls.php3"); 33 else 34 include_local("inc-urls-".$GLOBALS['type_urls'].".php3"); 35 36 if ($statut == 'prop') # forum modere 37 $url = "ecrire/controle_forum.php3?debut_id_forum=$id_forum"; 38 else if (function_exists('generer_url_forum')) 39 $url = generer_url_forum($id_forum); 40 else { 41 spip_log('inc-urls personnalise : ajoutez generer_url_forum() !'); 42 $url = generer_url_article($id_article); 43 } 44 45 $adresse_site = lire_meta("adresse_site"); 46 $url = $adresse_site .'/' . ereg_replace('^/', '', $url); 47 48 $sujet = "[" . 49 entites_html(textebrut(typo(lire_meta("nom_site")))) . 50 "] ["._T('forum_forum')."] $titre"; 51 52 $parauteur = (strlen($auteur) <= 2) ? '' : 53 (" " ._T('forum_par_auteur', array('auteur' => $auteur)) . 54 ($email_auteur ? "" : (' <' . $email_auteur . '>'))); 55 56 $corps = _T('form_forum_message_auto') . 57 "\n\n" . 58 _T('forum_poste_par', array('parauteur' => $parauteur)). 59 "\n" 60 . _T('forum_ne_repondez_pas') 61 . "\n" 62 . $url 63 . "\n\n\n".$titre."\n\n".textebrut(propre($texte)) 64 . "\n\n$nom_site_forum\n$url_site\n"; 65 66 $old_lang = $GLOBALS['spip_lang']; 67 68 $result = spip_query("SELECT auteurs.email, auteurs.lang FROM spip_auteurs AS auteurs, 69 spip_auteurs_articles AS lien 70 WHERE lien.id_article='$id_article' 71 AND auteurs.id_auteur=lien.id_auteur"); 72 while (list($email, $salangue) = spip_fetch_array($result)) { 73 $email = trim($email); 74 if (strlen($email) < 3) continue; 75 $GLOBALS['spip_lang'] = ($salangue ? $salangue : $old_lang); 76 envoyer_mail($email, $sujet, $corps) ; 77 } 78 $GLOBALS['spip_lang'] = $old_lang; 79 } 80 81 82 function controler_forum($id_article, $retour) { 83 global $auteur_session; 84 85 // Reglage forums d'article 86 if ($id_article) { 87 $q = spip_query("SELECT accepter_forum FROM spip_articles 88 WHERE id_article=$id_article"); 89 if ($r = spip_fetch_array($q)) 90 $forums_publics = $r['accepter_forum']; 91 } 92 93 // Valeur par defaut 94 if (!$forums_publics) 95 $forums_publics = substr(lire_meta("forums_publics"),0,3); 96 97 if ($forums_publics == "abo") { 98 if ($auteur_session) { 99 $statut = $auteur_session['statut']; 100 if (!$statut OR $statut == '5poubelle') { 101 ask_php_auth(_T('forum_acces_refuse'), 102 _T('forum_cliquer_retour', 103 array('retour_forum' => $retour))); 104 exit; 105 } 106 } else { 107 ask_php_auth(_T('forum_non_inscrit'), 108 _T('forum_cliquer_retour', 109 array('retour_forum' => $retour))); 110 exit; 111 } 112 } 113 114 return $forums_publics; 115 } 116 117 function mots_du_forum($ajouter_mot, $id_message) 118 { 119 foreach ($ajouter_mot as $id_mot) 120 if ($id_mot = intval($id_mot)) 121 spip_query("INSERT INTO spip_mots_forum (id_mot, id_forum) 122 VALUES ($id_mot, $id_message)"); 123 } 124 125 function enregistre_forum() { 126 global $REMOTE_ADDR, $auteur_session, 127 $afficher_texte, $ajouter_mot, $alea, $hash, 128 $auteur, $confirmer_forum, $email_auteur, $id_auteur, 129 $nom_site_forum, $retour_forum, $texte, $titre, $url_site; 130 131 $retour_forum = rawurldecode($retour_forum); 132 133 # retour a calculer (cf. inc-formulaire_forum) 134 if ($retour_forum == '!') { 135 $retour_forum = new Link(); 136 $retour_forum = $retour_forum->getUrl(); # en cas d'echec du post 137 $calculer_retour = true; 138 } 139 140 // Recuperer les donnees postees du formulaire ou stocker '0' 141 foreach (array('id_article', 'id_breve', 'id_syndic', 142 'id_rubrique', 'id_forum') as $id) 143 if (isset($_POST['forum_'.$id])) 144 $$id = intval($_POST['forum_'.$id]); 145 else 146 $$id = 0; 147 148 // initialisation de l'eventuel visiteur connecte 149 if (!$id_auteur) 150 $id_auteur = intval($auteur_session['id_auteur']); 151 152 $statut = controler_forum($id_article, $retour_forum); 153 154 // Ne pas autoriser de changement de nom si forum sur abonnement 155 if ($statut == 'abo') { 156 $auteur = $auteur_session['nom']; 157 $email_auteur = $auteur_session['email']; 158 } 159 160 // trop court ? 161 if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + 162 strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) { 163 ask_php_auth(_T('forum_message_trop_long'), 164 _T('forum_cliquer_retour', 165 array('retour_forum' => $retour_forum))); 166 exit; 167 } 168 169 // Verifier hash securite pour les forums avec previsu 170 if ($GLOBALS['afficher_texte'] <> 'non') { 171 include_ecrire("inc_admin.php3"); 172 if (!verifier_action_auteur("ajout_forum $id_rubrique". 173 " $id_forum $id_article $id_breve". 174 " $id_syndic $alea", $hash)) { 175 spip_log('erreur hash forum'); 176 die (_T('forum_titre_erreur')); # echec du POST 177 } 178 179 // verifier fichier lock 180 $alea = preg_replace('/[^0-9]/', '', $alea); 181 if (!file_exists($hash = _DIR_SESSIONS."forum_$alea.lck")) 182 return $retour_forum; # echec silencieux du POST 183 unlink($hash); 184 } 185 186 // Entrer le message dans la base 187 $id_message = spip_abstract_insert('spip_forum', '(date_heure)', '(NOW())'); 188 189 if ($id_forum) 190 list($id_thread) = spip_fetch_array(spip_query( 191 "SELECT id_thread FROM spip_forum WHERE id_forum = $id_forum")); 192 else 193 $id_thread = $id_message; # id_thread oblige INSERT puis UPDATE. 194 195 $statut = ($statut == 'non') ? 'off' : (($statut == 'pri') ? 'prop' : 196 'publie'); 197 198 spip_query("UPDATE spip_forum 199 SET id_parent = $id_forum, 200 id_rubrique = $id_rubrique, 201 id_article = $id_article, 202 id_breve = $id_breve, 203 id_syndic = $id_syndic, 204 id_auteur = $id_auteur, 205 id_thread = $id_thread, 206 date_heure = NOW(), 207 titre = '".addslashes(corriger_caracteres($titre))."', 208 texte = '".addslashes(corriger_caracteres($texte))."', 209 nom_site = '".addslashes(corriger_caracteres($nom_site_forum))."', 210 url_site = '".addslashes(corriger_caracteres($url_site))."', 211 auteur = '".addslashes(corriger_caracteres($auteur))."', 212 email_auteur = '".addslashes(corriger_caracteres($email_auteur))."', 213 ip = '$REMOTE_ADDR', 214 statut = '$statut' 215 WHERE id_forum = $id_message 216 "); 217 218 // Le cas echeant, calculer le retour 219 if ($calculer_retour) { 220 // Gestionnaire d'URLs 221 if (@file_exists("inc-urls.php3")) 222 include_local("inc-urls.php3"); 223 else 224 include_local("inc-urls-".$GLOBALS['type_urls'].".php3"); 225 226 // le retour automatique envoie sur le thread, ce qui permet 227 // de traiter elegamment le cas des forums moderes a priori. 228 // Cela assure aussi qu'on retrouve son message dans le thread 229 // dans le cas des forums moderes a posteriori, ce qui n'est 230 // pas plus mal. 231 $retour_forum = generer_url_forum($id_message, true); 232 } 233 234 // Entrer les mots-cles associes 235 if (is_array($ajouter_mot)) mots_du_forum($ajouter_mot, $id_message); 236 237 // Prevenir les auteurs de l'article 238 if (lire_meta("prevenir_auteurs") == "oui" AND ($afficher_texte != "non")) 239 prevenir_auteurs($auteur, $email_auteur, $id_message, $id_article, $texte, $titre, $statut); 240 241 // Poser un cookie pour ne pas retaper le nom / email 242 243 spip_setcookie('spip_forum_user', 244 serialize(array('nom' => $auteur, 'email' => $email_auteur))); 245 246 if ($statut == 'publie') { 247 // 248 // INVALIDATION DES CACHES LIES AUX FORUMS 249 // 250 include_ecrire('inc_invalideur.php3'); 251 suivre_invalideur ("id='id_forum/" . 252 calcul_index_forum($id_article, 253 $id_breve, 254 $id_rubrique, 255 $id_syndic) . "'"); 256 } 257 258 return $retour_forum; 259 } 260 261 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| [ Powered by PHPXref - Served by Debian GNU/Linux ] |