421
14 Octobre 2006, 14:58
14 Octobre 2006, 14:58
Index du forum
» Rechercher


<?php /******************************************************************************* * * [ ./poster.php (français) ] * * -------------------------------------------------------------------------- * Commencé le : 23 août 2004 * Copyright : Groupe Fire Soft Board * Site Web : http://www.fire-soft-board.com * E-mail : support@fire-soft-board.com * -------------------------------------------------------------------------- * Ce programme est libre, vous pouvez le redistribuer et/ou le modifier selon les * termes de la Licence Publique Générale GNU publiée par la Free Software Foundation * (version 2). Reportez-vous à la Licence Publique Générale GNU pour plus de détails. * Vous devez avoir reçu une copie de la Licence Publique Générale GNU en même temps * que ce programme ; si ce n'est pas le cas, écrivez à la Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, États-Unis. * -------------------------------------------------------------------------- * * Derniére modification le 25 septembre 2005 par Genova * Templates : 2 * poster_corps.tpl * popup_smileys.tpl * *******************************************************************************/ // // Les fonctions javascripts utilisées pour le placement de BBcode ou de smiley dans une zone de texte, ont été reprises // de phpBB. // define('FORUM', TRUE); $racine = './'; include($racine . 'demarrage.php'); // On lance les sessions // changement themes par forum //$membre = recuperer_session(); include( $racine . 'includes/functions/fonctions_message.php' ); // On inclu les données sur les forums/categories include( $racine . 'cache/fichier_categorie.php' ); $cache->load_table('forum', CACHE_SQL); // On lance les sessions $membre = recuperer_session(); // // Sécurisation des variables // $mode = isset($HTTP_GET_VARS['mode']) ? HtmlSpecialChars($HTTP_GET_VARS['mode']) : ''; $forum_id = isset($HTTP_GET_VARS['forum']) ? intval($HTTP_GET_VARS['forum']) : ''; $sujet_id = isset($HTTP_GET_VARS['sujet']) ? intval($HTTP_GET_VARS['sujet']) : ''; $message_id = isset($HTTP_GET_VARS['message']) ? intval($HTTP_GET_VARS['message']) : ''; $citer_id = ( isset($HTTP_GET_VARS['citer']) ) ? intval($HTTP_GET_VARS['citer']) : ''; $login_url = ( isset($HTTP_GET_VARS['login']) ) ? htmlSpecialChars($HTTP_GET_VARS['login']) : ''; $repondre_mp = ( isset($HTTP_GET_VARS['repondre_mp']) ) ? intval($HTTP_GET_VARS['repondre_mp']) : ''; $preview = ( $HTTP_POST_VARS['prev'] ) ? TRUE : FALSE; $type_sondage = ( isset($HTTP_POST_VARS['type_sondage']) ) ? $HTTP_POST_VARS['type_sondage'] : 0; $on_accede_sujet_v= 1; $parametre = array('nouveau_sujet', 'reponse', 'smiley', 'editer', 'message_prive'); if ( ! in_array($mode, $parametre) ) { redir('index.php'); } // On inclu les smileys include( $racine . 'cache/fichier_smiley.php' ); // // On génère vite fais la boite pour visioner les smileys dans la pop up // if ( $mode == 'smiley' ) { // mods Centralise fscode & smileys :: ----------------------------------------- //-replace pop_smileys(); // mods Centralise fscode & smileys :: ----------------------------------------- exit; } $sql = ''; if ( $mode == 'editer' ) { $sql = 'SELECT mes.forum_id, mes.membre_id, s.sujet_id, s.premier_message_id, s.sujet_nom, s.sondage, s.sujet_type, s.description, s.sujet_status FROM ' . MESSAGES_TABLE . ' mes LEFT JOIN ' . SUJETS_TABLE . ' s ON mes.sujet_id = s.sujet_id WHERE mes.message_id = \'' . $message_id . '\''; } else if ( $mode == 'reponse' ) { $on_accede_sujet_v= 0; $sql = 'SELECT forum_id, sujet_id, sujet_nom, sujet_status, sujet_type FROM ' . SUJETS_TABLE . ' WHERE sujet_id = \'' . $sujet_id . '\''; } if ( $mode == 'editer' || $mode == 'reponse' ) { if ( ! $result = $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'forums | sujets'), __LINE__, __FILE__, $sql); } $forum_donnees = $bdd->tableau($result); $forum_id = $forum_donnees['forum_id']; $premier_message = ( $forum_donnees['premier_message_id'] == $message_id ) ? TRUE : FALSE; if ($premier_message) { $premier_msg_sondage = ( isset($forum_donnees['sondage']) ? $forum_donnees['sondage'] : 0 ); } else { $premier_msg_sondage = 0; } } if ( $mode == 'message_prive' ) { // // On vérifie que la messagerie privée est activée sur ce forum, on vérifie // aussi si le membre n'a pas sa messagerie privée de désactivée. // include($racine . 'includes/functions/fonctions_mp.php'); if ( $mode == 'message_prive' && $membre['membre_id'] == INVITE ) { redir($racine . 'connexion.php?redirection=poster.php$mode=message_prive'); } if (!$config['messagerie_privee'] || ! $membre['membre_mp_actif'] || !$MOD['message_prive']) { info($langue['info_titre'], $langue['messagerie_desactivee']); } } else { // // On récupère les données de ce forum, ainsi que les droits du visiteur parcourant // la page vis à vis de ce forum. // include( $racine . 'cache/fichier_moderation.php' ); $forum_a = forum_tableau($forum_id); if ( empty($forum_a['forum_id']) OR $forum_a['type'] == "lien" ) { info($langue['info_titre'], $langue['forum_non_existant']); } $droits = droits($membre, $forum_a, $moderation, $droit_forum); $min_mess_voir = $membre['membre_aut'] == 0 && $MOD['messages_forum'] ? $forum_a['forum_min_mess_voir'] : 0; $min_mess_post = $membre['membre_aut'] == 0 && $MOD['messages_forum'] ? $forum_a['forum_min_mess_post'] : 0; $min_mess_rep = $membre['membre_aut'] == 0 && $MOD['messages_forum'] ? $forum_a['forum_min_mess_rep'] : 0; $min_mess_edit = $membre['membre_aut'] == 0 && $MOD['messages_forum'] ? $forum_a['forum_min_mess_edit'] : 0; // // Le membre peut il voir ce forum? A t'il le droit de poster un nouveau sujet? A t'il le droit // de répondre à un sujet de ce forum? // if ( ! $droits['droit_voir'] || ! $droits['droit_lire'] || $min_mess_voir > $membre['membre_nb_message']) { info($langue['info_titre'], $langue['interdit_droit_voir']); } else if ( ! $droits['droit_poster'] || $min_mess_post > $membre['membre_nb_message'] && $mode == 'nouveau_sujet' ) { info($langue['info_titre'], $langue['interdit_droit_poster']); } else if (!$droits['droit_repondre'] || $min_mess_rep > $membre['membre_nb_message'] && $mode == 'reponse') { info($langue['info_titre'], $langue['interdit_droit_repondre']); } else if ( $mode == 'editer' && ( ( ! $droits['droit_editer'] && ! $droits['membre_editer'] ) || ( $droits['membre_editer'] && $membre['membre_id'] != $forum_donnees['membre_id'] ) || $min_mess_edit > $membre['membre_nb_message']) ) { info($langue['info_titre'], $langue['interdit_droit_editer']); } else if (($mode == 'reponse' || $mode == 'editer') && ! $forum_donnees['sujet_status'] && ! $droits['est_modo']) { info($langue['info_titre'], $langue['est_verrouiller']); } else if ( $mode == 'reponse' && $forum_donnees['sujet_id'] == '' ) { info($langue['info_titre'], $langue['sujet_inexistant']); } else if ( $type_sondage && ! $droits['droit_sondage_poster'] ) { info($langue['info_titre'], $langue['sondage_pasaccess']); } } // // Si le formulaire est soumis... // if ( isset($HTTP_POST_VARS['soumettre']) || $preview ) { $destinataire = htmlSpecialChars(trim($HTTP_POST_VARS['destinataire'])); $posteur_invite = htmlSpecialChars($HTTP_POST_VARS['posteur_invite']); $pseudo_invite = htmlSpecialChars(trim($HTTP_POST_VARS['pseudo'])); $sujet_nom = htmlSpecialChars(trim($HTTP_POST_VARS['sujet_nom'])); $sujet_description = htmlSpecialChars(trim($HTTP_POST_VARS['description'])); $message_txt = htmlSpecialChars(trim($HTTP_POST_VARS['message'])); $type_sujet = ( $HTTP_POST_VARS['type_sujet'] == '' ) ? count($sujet_type) - 1 : intval($HTTP_POST_VARS['type_sujet']); $type_sondage = ( $type_sondage == "" )? 0 : 1 ; if ($type_sondage) { $v_sondage_acces = ( isset($HTTP_POST_VARS['sondage_acces']) ) ? intval($HTTP_POST_VARS['sondage_acces']) : 1; $v_sondage_nbre_reponse = ( isset($HTTP_POST_VARS['sondage_nbre_reponse']) ) ? intval($HTTP_POST_VARS['sondage_nbre_reponse']) : 1; $v_sondage_delai = ( isset($HTTP_POST_VARS['sondage_delai']) ) ? intval($HTTP_POST_VARS['sondage_delai']) : 0; $v_sondage_reponses = ( isset($HTTP_POST_VARS['sondage_reponses']) ) ? $HTTP_POST_VARS['sondage_reponses'] : ''; $sondage_saisie_ok = f_sondage_mise_en_forme_reponses(); } else { $v_sondage_acces = 0; } } if( isset($HTTP_POST_VARS['soumettre']) ) { // // On récupère les variables utiles pour pouvoir poster un sujet, une réponse ou éditer un message // unset($erreur); // On vérifie le quelques champs... if( ( $mode == 'nouveau_sujet' || $mode == 'message_prive' || ( $mode == 'editer' && $premier_message ) ) && empty($sujet_nom) ) { $erreur .= $langue['er_titre_sujet_manquant'] . '<br />'; } if( ( $posteur_invite && empty($pseudo_invite) ) || $message_txt == '' ) { $erreur .= $langue['er_champs_vides_poster'] . '<br />'; } if( $type_sondage && !$sondage_saisie_ok ) { $erreur .= $langue['er_pas_assez_reponses'] . '<br />'; } // // On vérifie si la session du membre est expirée, si c'est le cas, on avertit celui-ci et l'invite (:P) // à se reconnecter // if( ! $posteur_invite && $membre['membre_id'] == INVITE ) { $erreur .= sprintf($langue['session_expire'], $racine . 'connexion.php?redirection=' . $racine . 'poster.php$mode=' . $mode . '*forum=' . $forum_id . '*sujet=' . $sujet_id . '*message=' . $message_id); } if ($MOD['No_flood_limit_for_admin']) { // Si l'utilisateur n'est pas admin, on vérifie la limite de flood if($membre['membre_aut'] != ADMIN) { // On vérifie si la limite de flood a été dépassée if ( ( $mode == 'nouveau_sujet' || $mode == 'reponse' ) && ( time() - $config['flood_limite'] ) < $membre['temps_flood'] ) { $erreur .= sprintf($langue['attente_flood'], $config['flood_limite']) . '<br />'; } } } else { // On vérifie si la limite de flood a été dépassée if ( ( $mode == 'nouveau_sujet' || $mode == 'reponse' ) && ( time() - $config['flood_limite'] ) < $membre['temps_flood'] ) { $erreur .= sprintf($langue['attente_flood'], $config['flood_limite']) . '<br />'; } } if ( $mode == 'message_prive' ) { $recep_data = verif_destinataire_mp($destinataire, $erreur); } // On récupère le login du posteur, ce pseudo ne servira que en cas de 'nouveau_sujet' ou 'reponse' $pseudo_posteur = ( $membre['membre_id'] == INVITE ) ? $pseudo_invite : addslashes($membre['membre_login']); if( $config['surveillance_sujet'] == 1 ) { $requete_surveillance = 'SELECT s.*, f.* FROM ' . SURVEILLANCE_TABLE . ' s LEFT JOIN ' . MEMBRES_TABLE . ' f ON s.membre_id = f.membre_id WHERE s.sujet_id = \'' . $sujet_id . '\' AND s.membre_id != \'' . $membre['membre_id'] . '\''; if( ! $execution_requete = $bdd->requete( $requete_surveillance ) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'surveillance_sujet'), __LINE__, __FILE__, $requete_surveillance); } $surveillance = $bdd->tableau( $execution_requete ); if(isset($surveillance['membre_id'])) { include($racine . 'includes/class/class_mail.php'); $mail = new Mail($langue['charset']); $sql_sujet = 'SELECT sujet_nom FROM ' . SUJETS_TABLE . ' WHERE sujet_id = \'' . $sujet_id . '\''; if( ! $execution_sujet = $bdd->requete( $sql_sujet ) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'sujet'), __LINE__, __FILE__, $sql_sujet); } $nom_sujet = $bdd->tableau( $execution_sujet ); $requete_surveillance2 = 'SELECT s.*, f.* FROM ' . SURVEILLANCE_TABLE . ' s LEFT JOIN ' . MEMBRES_TABLE . ' f ON s.membre_id = f.membre_id WHERE s.sujet_id = \'' . $sujet_id . '\' AND s.membre_id != \'' . $membre['membre_id'] . '\''; if( ! $execution_requete2 = $bdd->requete( $requete_surveillance2 ) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'surveillance_sujet'), __LINE__, __FILE__, $requete_surveillance2); } while( $surveillance2 = $bdd->tableau( $execution_requete2 ) ) { $mail->set_langue( $surveillance2['membre_langue'] ); $mail->set_mail('mail_notification.html'); $mail->sujet( $langue['notification'] . ' : ' . $nom_sujet['sujet_nom'] ); $mail->signature(''); $mail->message(array( 'MEMBRE' => $surveillance2['membre_login'], 'SUJET' => $nom_sujet['sujet_nom'], 'U_SUJET' => $config['dommaine_site'] . '/sujet.php?sujet=' . $sujet_id, 'DESINSCRIPTION' => $config['dommaine_site'] . '/sujet.php?sujet=' . $sujet_id . '&surveillance=0', 'SIGNATURE' => '' )); $mail->expediteur( $config['forum_mail'] , $config['nom_site'] ); $mail->destinataire( $surveillance2['membre_email'], $surveillance2['membre_login'] ); $mail->envoie(); $mail->reset_vars(); } } } // // S'il n'y a aucune erreur, on enregistre le message // if( empty($erreur) ) { switch( $mode ) { case "nouveau_sujet": // // Si c'est un nouveau sujet, on enregistre les données dans la table "sujets" // puis "messages". // $sql = 'INSERT INTO ' . SUJETS_TABLE . ' (forum_id, membre_id, sujet_nom, nb_vu, nb_reponse, sujet_type, sondage, description) VALUES(\'' . $forum_id . '\', \'' . $membre['membre_id'] . '\', \'' . $sujet_nom . '\', \'0\', \'0\',\'' . $type_sujet . '\', \'' . $v_sondage_acces . '\' , \'' . $sujet_description . '\')'; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_insert'], 'sujets'), __LINE__, __FILE__, $sql, TRUE); } // On récupère l'id du dernier sujet $derniere_id_sujet = $bdd->derniere_id(); // // Ne pas mettre de break; ici [img:alt=,title=]http://www.fire-soft-board.com/fsb/images/smileys/tongue.gif[/img] // - Dark_Genova - // if ($type_sondage) { f_sondage_enregistrer($derniere_id_sujet, $v_sondage_delai, $v_sondage_nbre_reponse, $v_sondage_tab_reponses); } case "reponse": // // On insert un message dans la base de données, puis on met à jour le sujet concerné // par ce message // $sujet_id = ( $mode == 'nouveau_sujet' ) ? $derniere_id_sujet : $sujet_id; $time = time(); $sql = 'INSERT INTO ' . MESSAGES_TABLE . ' (forum_id, sujet_id, membre_id, pseudo_posteur, message_texte, message_temps, message_ip) VALUES(\'' . $forum_id . '\', \'' . $sujet_id . '\', \'' . $membre['membre_id'] . '\', \'' . $pseudo_posteur . '\', \'' . $message_txt . '\', \'' . $time . '\', \'' . ip2long($HTTP_SERVER_VARS['REMOTE_ADDR']) . '\' )'; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_insert'], 'messages'), __LINE__, __FILE__, $sql, TRUE); } // On récupère l'id du dernier message $derniere_id_message = $bdd->derniere_id(); // // On met à jour le sujet fraichement poster en y entrant des données sur le dernier message posté. // $sql_update = ( $mode == 'nouveau_sujet' ) ? ', premier_message_id = \'' . $derniere_id_message . '\'' : ', nb_reponse = nb_reponse + 1'; $sql = 'UPDATE ' . SUJETS_TABLE . ' SET dernier_message_id = \'' . $derniere_id_message . '\', dernier_message_temps = \'' . $time . '\'' . $sql_update . ' WHERE sujet_id = \'' . $sujet_id . '\' '; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_update'], 'sujet'), __LINE__, __FILE__, $sql, TRUE); } // + 1 message pour le membre [img:alt=,title=]http://www.fire-soft-board.com/fsb/images/smileys/happy.gif[/img] // - Dark_Genova - $sql = 'UPDATE ' . MEMBRES_TABLE . ' SET membre_nb_message = membre_nb_message + 1, temps_flood = \'' . $time . '\' WHERE membre_id = \'' . $membre['membre_id'] . '\''; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_update'], 'membres'), __LINE__, __FILE__, $sql, TRUE); } // // On incrémente le compteur de message de 1 pour le forum concerné, on place // aussi l'ID du dernier message ainsi que la date, l'ID du posteur et son nom. // $forum[$forum_a['cle_forum']]['forum_nb_message']++; $forum[$forum_a['cle_forum']]['forum_nb_sujet'] += ( $mode == 'nouveau_sujet' ) ? 1 : 0; $forum[$forum_a['cle_forum']]['dernier_message_id'] = $derniere_id_message; $forum[$forum_a['cle_forum']]['dernier_message_temps'] = time(); $forum[$forum_a['cle_forum']]['dernier_posteur_id'] = $membre['membre_id']; $forum[$forum_a['cle_forum']]['dernier_posteur_login'] = stripslashes($pseudo_posteur); $cache->write_in_cache($forum, 'forum', $compte_forum, FALSE); // // Mise à jour en tant que lu du sujet. // if ($membre['membre_id'] != INVITE && $mode == 'nouveau_sujet') { $cookie_sujet = recuperer_nouveaux_messages($membre['membre_id'], $membre['derniere_visite'], $forum_id, $derniere_id_sujet); $sujet = array(); $sujet['sujet_id'] = $sujet_id; $sujet['dernier_message_temps'] = $time; $sujet['dernier_message_lu'] = ''; $sujet['forum_id'] = $forum_id; marquer_sujet_lu($sujet, $membre['membre_id']); } else if ($membre['membre_id'] != INVITE) { $cookie_sujet = recuperer_nouveaux_messages($membre['membre_id'], $membre['derniere_visite'], $forum_id); $sujet = $cookie_sujet[$sujet_id]; $sujet['dernier_message_temps'] = $time; $sujet['sujet_id'] = $sujet_id; $sujet['forum_id'] = $forum_id; marquer_sujet_lu($sujet, $membre['membre_id']); } info($langue['info_titre'], $langue['message_enregistre'] . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('sujet.php?message=' . $derniere_id_message) . '#' . $derniere_id_message, $langue['voir_message']) . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('forum.php?forum=' . $forum_a['forum_id']), sprintf($langue['retourner_forum'], $forum_a['forum_nom']))); break; case "editer": // // Les versions antérieures à MySQL4 semblent ne pas être compatibles // avec les UPDATE sur plusieurs tables à la fois. Aussi on propose des // "requètes de secours" pour le cas ou... // if ($MySQL_version >= 4) { $editer_sujet = ($premier_message) ? ', s.sujet_nom = \'' . $sujet_nom . '\', s.sujet_type = \'' . $type_sujet . '\', s.description = \'' . $sujet_description . '\'' : ''; $sql = 'UPDATE ' . MESSAGES_TABLE . ' mes LEFT JOIN ' . SUJETS_TABLE . ' s ON mes.sujet_id = s.sujet_id SET mes.message_texte = \'' . $message_txt . '\' ' . $editer_sujet . ' WHERE mes.message_id = \'' . $message_id . '\''; if (!$bdd->requete($sql)) { info($langue['er_titre'], sprintf($langue['er_update'], 'messages, sujets'), __LINE__, __FILE__, $sql); } } else { $sql = 'UPDATE ' . MESSAGES_TABLE . ' SET message_texte = \'' . $message_txt . '\' WHERE message_id = \'' . $message_id . '\''; if (!$bdd->requete($sql)) { info($langue['er_titre'], sprintf($langue['er_update'], 'messages'), __LINE__, __FILE__, $sql); } if ($premier_message) { $sql = 'UPDATE ' . SUJETS_TABLE . ' SET sujet_nom = \'' . $sujet_nom . '\', sujet_type = \'' . $type_sujet . '\' , description = \'' . $sujet_description . '\' WHERE sujet_id = \'' . $forum_donnees['sujet_id'] . '\''; if (!$bdd->requete($sql)) { info($langue['er_titre'], sprintf($langue['er_update'], 'messages'), __LINE__, __FILE__, $sql); } } } if ($premier_message && $type_sondage) { f_sondage_editer($forum_donnees['sujet_id'],$v_sondage_delai,$v_sondage_nbre_reponse,$v_sondage_tab_reponses); } info($langue['info_titre'], $langue['message_editer'] . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('sujet.php?message=' . $message_id) . '#' . $message_id, $langue['voir_message']) . '<br /><br />' . sprintf($langue['cliquer'], ajout_sid('forum.php?forum=' . $forum_a['forum_id']), sprintf($langue['retourner_forum'], $forum_a['forum_nom']))); break; case "message_prive": envoyer_mp($membre['membre_id'], $recep_data['membre_id'], $sujet_nom, $message_txt, $sujet_description); if ($recep_data['notification_mp']) { mp_notifaction($membre['membre_login'], $recep_data['membre_login'], $recep_data['membre_email'], $recep_data['membre_langue']); } info($langue['info_titre'], $langue['mp_est_envoyer'] . '<br /><br />' . sprintf($langue['retour_boite_reception'], ajout_sid('message_prive.php'))); break; default: info($langue['er_titre'], $langue['mauvais_parametre'], __LINE__, __FILE__); break; } } } switch ( $mode ) { case "nouveau_sujet": $page_titre = sprintf($langue['poster'], $langue['nouveau_sujet']); $liens_header = ' -> ' . sprintf($langue['poster'], $langue['nouveau_sujet']); $poster = sprintf($langue['poster'], $langue['nouveau_sujet']); $form_action = ajout_sid('poster.php?mode=nouveau_sujet&forum=' . $forum_id); $liens_header = hierarchie_forum($forum_a['forum_id'], '', PREMIER_PALIER, FALSE) . $liens_header; break; case "reponse": $page_titre = sprintf($langue['poster'], $langue['une_reponse']); $liens_header = ' -> ' . sprintf($langue['poster'], $langue['une_reponse']); $poster = sprintf($langue['poster'], $langue['une_reponse']); $form_action = ajout_sid('poster.php?mode=reponse&sujet=' . $sujet_id); $liens_header = hierarchie_forum($forum_a['forum_id'], '', PREMIER_PALIER, FALSE) . $liens_header; break; case "editer": $page_titre = $langue['editer']; $liens_header = ' -> ' . $langue['editer']; $liens_header = hierarchie_forum($forum_a['forum_id'], '', PREMIER_PALIER, FALSE) . $liens_header; $poster = $langue['editer']; break; } // // Si on édite ou bien on cite un message, on va récupéré ce message // if ( ( $mode == 'editer' && ( $droits['droit_editer'] || ( $droits['membre_editer'] && $membre['membre_id'] == $forum_donnees['membre_id'] ) ) || ( $mode == 'reponse' && ! empty($citer_id) ) ) && empty($erreur) && ! $preview ) { $sql_var_id = ( $mode == 'editer' ) ? $message_id : $citer_id; $sql = 'SELECT membre_id, message_texte, pseudo_posteur FROM ' . MESSAGES_TABLE . ' WHERE message_id = \'' . $sql_var_id . '\''; if ( ! $result = $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'messages'), __LINE__, __FILE__, $sql); } $donnees = $bdd->tableau($result); if ( $donnees['message_texte'] == '' ) { info($langue['er_titre'], $langue['aucun_message_trouve']); } $v_message_txt = ( $mode == 'editer' ) ? $donnees['message_texte'] : '[quote=' . $donnees['pseudo_posteur'] . ']' . $donnees['message_texte'] . '[/quote]'; $v_titre_sujet = ( $mode == 'editer' ) ? $forum_donnees['sujet_nom'] : ''; $v_description_sujet = ( $mode == 'editer' ) ? $forum_donnees['description'] : ''; $on_accede_sujet_v=false; $mode_sondage_editer = false; if ($premier_msg_sondage && f_pas_de_vote($forum_donnees['sujet_id'])) { f_lire_sondage($forum_donnees['sujet_id']); $type_sondage=true; $v_sondage_acces = $premier_msg_sondage; $mode_sondage_editer = true; } if ($mode == 'editer') { if ( preg_match_all('`\[droit=([[:alpha:]]*)\](.*?)\[/droit\]`si', $v_message_txt, $trouver, PREG_SET_ORDER) ) { foreach($trouver as $match) { $no_edit_fscode_droit = false; switch ($match['1']) { case 'admin': if ( !($membre['membre_aut'] >= ADMIN) ) $no_edit_fscode_droit = true; break; case 'modoglobal': if ( !($membre['membre_aut'] >= MODOSUP) ) $no_edit_fscode_droit = true; break; case 'modoforum': if ( !($droits['est_modo']) ) $no_edit_fscode_droit = true; break; case 'modo': if ( !($membre['membre_aut'] >= MODO) ) $no_edit_fscode_droit = true; break; case 'membre': if ( !($membre['membre_aut'] >= MEMBRE) ) $no_edit_fscode_droit = true; break; case 'invite': if ( !($membre['membre_aut'] >= FSCODE_DROIT || $membre['membre_id'] == 0) ) $no_edit_fscode_droit = true; break; default: $no_edit_fscode_droit = true; } if($no_edit_fscode_droit) { info($langue['info_titre'], $langue['interdit_droit_editer']); exit; } } } } } else if ( $mode == 'message_prive' && ! empty($repondre_mp) && empty($erreur) ) { $t = recup_reponse_mp($repondre_mp); $v_destinataire = $t['dest']; $v_titre_sujet = $t['titre']; $v_message_txt = $t['texte']; $v_description_sujet = $t['description']; } else if ( ! empty($erreur) || $preview ) { $v_message_txt = stripslashes($message_txt); $v_titre_sujet = stripslashes($sujet_nom); $v_description_sujet = stripslashes($sujet_description); $v_destinataire = stripslashes($destinataire); } if ($mode == 'message_prive' && empty($v_destinataire) && !empty($login_url)) { $v_destinataire = stripslashes($login_url); } if ( ! defined('HEADER') ) { include( $racine . 'includes/header_forum.php' ); } if( ! empty($erreur) ) { info($langue['info_titre'], $erreur, '', '', '', FALSE); } $tpl->set_filenames( array('corps' => 'poster_corps.tpl') ); // // Si on a appuyé sur "Prévisualisation", on parse le message dans poster_corps.tpl // if( $preview && $v_message_txt != '' ) { $message_prev = $v_message_txt; $message_prev = anti_html($message_prev); $message_prev = nl2br($message_prev); $message_prev = fscode_parse($message_prev); $message_prev = smileys($message_prev, $smiley); if ($type_sondage) { $message_prev = $v_sondage_reponses_prev . $message_prev; } $tpl->assign_block_vars('message_prev', array( 'POSTE_LE' => aff_date(time()), 'MESSAGE_PREV' => $message_prev )); } $tpl->assign_vars( array( 'L_POSTER' => $poster, 'L_ECRIRE_MESSAGE' => $langue['ecrire_message'], 'L_SMILIES' => $langue['smilies'], 'L_SOUMETTRE' => $langue['soumettre'], 'L_INFOS_MESSAGE' => $langue['infos_message'], 'L_TITRE_SUJET' => $langue['titre_sujet'], 'L_DESCRIPTION_SUJET' => $langue['description_sujet'], 'L_LOGIN' => $langue['login'], 'L_TYPE_SUJET' => $langue['type_sujet'], 'L_TYPE_NORMAL' => $langue['type_sujet_normal'], 'L_TYPE_ANNONCE' => $langue['type_sujet_annonce'], 'L_MESSAGE_PREV' => $langue['previsualisation'], 'L_AUTEUR' => $langue['auteur'], 'L_MESSAGE' => $langue['message'], 'L_POSTE_LE' => $langue['poste_le'], 'L_PALETTE' => $langue['palette_couleur'], 'L_TXT_COULEUR' => $langue['fscode_defaut_couleur'], 'L_DESTINATAIRE' => $langue['destinataire'], 'U_ACTION' => $form_action, 'U_PLUS_SMILEY' => addslashes(ajout_sid('poster.php?mode=smiley')), 'V_MESSAGE_TXT' => $v_message_txt, 'V_DESCRIPTION_SUJET' => $v_description_sujet, 'V_DESTINATAIRE' => $v_destinataire, 'V_TITRE_SUJET' => $v_titre_sujet )); f_sondage_afficher($type_sondage, $v_sondage_acces, $v_sondage_nbre_reponse, $v_sondage_delai, $v_sondage_reponses,$on_accede_sujet_v); // // On affiche les FScode sous forme de boutton à partir du tableau $fscode_bouttons. Le nombre // de FScode apr ligne, donné par la variable $fscode_lignes, est défini dans includes/variables_generales.php // -Dark_Genova - // // mods Centralise fscode & smileys :: ----------------------------------------- //-replace get_base_fscode(); // mods Centralise fscode & smileys :: ----------------------------------------- // // On fait de même que pour afficher les FScodes sauf que cette fois on gère les listes // -Dark_Genova - // // mods Centralise fscode & smileys :: ----------------------------------------- //-replace get_liste_fscode(); // mods Centralise fscode & smileys :: ----------------------------------------- // // On affiche les smileys, la variable $smiley_lignes vient du fichier // includes/variables_generales.php // -Dark_Genova - // // mods Centralise fscode & smileys :: ----------------------------------------- //-replace get_smileys(); // mods Centralise fscode & smileys :: ----------------------------------------- if( $mode == 'nouveau_sujet' || ( $mode == 'reponse' && $membre['membre_id'] == INVITE ) ) { $tpl->create_block('infos'); } // // On génère la pallette de couleur dynamiquement en formant des // combinaisons de couleurs en héxadécimales. // - Dark_Genova - // // mods Centralise fscode & smileys :: ----------------------------------------- //-replace get_fscode_couleur(); // mods Centralise fscode & smileys :: ----------------------------------------- // // On génère la liste des types de sujets en fonction des autorisations et du tableau $sujet_type // présent dans includes/variables_generales.php // -Dark_Genova - // if( $mode == 'nouveau_sujet' || ( $mode == 'editer' && $premier_message ) ) { $v_checked = ''; $aut_sujet_type = array(); $u = 0; for ( $t = 0; $t < count($sujet_type); $t++ ) { if ($droits['droit_' . $sujet_type[$t]] || ($mode == 'editer' && $forum_donnees['sujet_type'] == $t)) { $aut_sujet_type[$u]['sujet_type'] = $sujet_type[$t]; $aut_sujet_type[$u]['num'] = $t; $u++; } } if ( $compte_aut_type = count($aut_sujet_type) ) { //$tpl->assign_block_vars('type_sujet', array()); $checked_bolean = FALSE; for ( $v = 0; $v < $compte_aut_type; $v++ ) { $v_checked = ''; if ( ( $mode == 'editer' && $aut_sujet_type[$v]['num'] == $forum_donnees['sujet_type'] && ! $preview ) || ( $preview && $type_sujet == $aut_sujet_type[$v]['num'] ) || ( ! $checked_bolean && $v == ( $compte_aut_type - 1 ) ) ) { $v_checked = 'checked="checked"'; $checked_bolean = TRUE; } $tpl->assign_block_vars('type_sujet.type_sujet_s', array( 'L_SUJET_TYPE_NOM' => $langue['type_sujet_' . $aut_sujet_type[$v]['sujet_type']], 'V_SUJET_TYPE' => $aut_sujet_type[$v]['num'], 'V_CHECKED' => $v_checked )); } } } // // Revue des 10 messages précédents en cas de réponse. // if( $mode == 'reponse' ) { $sql_mes = 'SELECT * FROM ' . MESSAGES_TABLE . ' WHERE sujet_id = \'' . $sujet_id . '\' ORDER BY message_temps DESC LIMIT 0,10'; if ( ! $result_mes = $bdd->requete($sql_mes) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'messages'), __LINE__, __FILE__, $sql_mes); } $tpl->assign_block_vars('revue_sujet', array( 'L_REVUE_SUJET' => $langue['revue_sujet'], 'TITRE_SUJET' => $forum_donnees['sujet_nom'], 'U_SUJET' => ajout_sid($racine . 'sujet.php?sujet=' . $sujet_id) )); while( $revue = $bdd->tableau($result_mes) ) { $message_revue = $revue['message_texte']; $message_revue = anti_html($message_revue); $message_revue = nl2br($message_revue); $message_revue = fscode_parse($message_revue); $message_revue = smileys($message_revue, $smiley); $class_aut = class_aut($revue['membre_id']); $tpl->assign_block_vars('revue_sujet.message', array( 'MEMBRE_LOGIN' => ( $revue['membre_id'] == INVITE ) ? $revue['pseudo_posteur'] : '<a href="' . ajout_sid($racine . 'profil_public.php?id=' . $revue['membre_id']) . '" ' . $class_aut . '>' . $revue['pseudo_posteur'] . '</a>', 'POSTE_LE' => aff_date($revue['message_temps']), 'MESSAGE' => $message_revue )); } } if ($membre['membre_id'] == INVITE && ($droits['droit_poster'] || $droits['droit_repondre']) && $mode != 'editer') { $tpl->create_block('invite'); } if ( $mode == 'nouveau_sujet' || $mode == 'message_prive' || ( $mode == 'editer' && $premier_message ) ) { $tpl->create_block('sujet_nom'); } if ( $mode == 'message_prive' ) { $tpl->create_block('message_prive'); } $tpl->pparse('corps'); // On inclut le bas de la page include( $racine . 'includes/footer_forum.php'); function f_sondage_afficher($oui, $v_sondage_acces, $v_sondage_nbre_reponse, $v_sondage_delai, $v_sondage_reponses, $on_accede_sujet_v) { // $oui = 1 on affiche la zone saisie sondage, =0 dans le cas contraire global $tpl, $langue, $droits, $mode, $mode_sondage_editer; if (!$droits['droit_sondage_poster']) { $oui = 0; } if ($oui) { $z_sondage_afficher="block"; $l_titre_sujet = $langue['titre_sondage']; $v_sondage_checked="checked"; } else { $z_sondage_afficher="none"; $l_titre_sujet = $langue['titre_sujet']; $v_sondage_checked=""; } $v_sondage_acces_liste='<option value="1" '.( $v_sondage_acces == 1 ? "selected" : "").'>'.$langue['sondage_access_choix1'].'</option>'; $v_sondage_acces_liste.='<option value="2" '.( $v_sondage_acces == 2 ? "selected" : "").'>'.$langue['sondage_access_choix2'].'</option>'; $v_sondage_acces_liste.='<option value="3" '.( $v_sondage_acces == 3 ? "selected" : "").'>'.$langue['sondage_access_choix3'].'</option>'; $v_sondage_reponse_liste=""; for ($i=1; $i<9;$i++) { if ($i==$v_sondage_nbre_reponse) {$v="selected";} else {$v="";} $v_sondage_reponse_liste.='<option value="'.$i.'" '.$v.'>'.$i.'</option>'; } $tpl->assign_vars( array( 'Z_SONDAGE_AFFICHER' => $z_sondage_afficher, 'L_SONDAGE' => $langue['sondage_entete'], 'L_SONDAGE_ACCES' => $langue['sondage_access'], 'L_SONDAGE_NBRE_REPONSE' => $langue['sondage_nbre_reponse'], 'L_SONDAGE_NBRE_REPONSE_AI' => $langue['sondage_nbre_reponse_aide'], 'L_SONDAGE_REPONSES' => $langue['sondage_reponses'], 'L_SONDAGE_DELAI' => $langue['sondage_delai'], 'L_SONDAGE_DELAI_AI' => $langue['sondage_delai_aide'], 'V_SONDAGE_ACCES' => $v_sondage_acces_liste, 'V_SONDAGE_NBRE_REPONSE' => $v_sondage_reponse_liste, 'V_SONDAGE_DELAI' => intval($v_sondage_delai), 'V_SONDAGE_REPONSES_TXT' => $v_sondage_reponses, )); $tpl->assign_vars( array( 'L_TITRE_SUJET' => $l_titre_sujet, )); if ($mode <> 'reponse') { $tpl->assign_block_vars('type_sujet', array()); } if ($mode == 'editer' && $mode_sondage_editer) { $tpl->create_block('type_sujet_vi'); } if ($droits['droit_sondage_poster'] && $on_accede_sujet_v) { $tpl->assign_block_vars('type_sujet.type_sujet_v', array( 'L_TITRE_SONDAGE' => $langue['titre_sondage'], 'L_TITRE_SUJETS' => $langue['titre_sujet'], 'L_SUJET_TYPE_SONDAGE' => $langue['sondage'], 'V_CHECKED_SONDAGE' => $v_sondage_checked, )); } } function f_sondage_mise_en_forme_reponses() { global $langue, $v_sondage_nbre_reponse, $v_sondage_reponses, $v_sondage_tab_reponses,$v_sondage_reponses_prev; $sondage_tab_reponses=array(); $v_sondage_reponses=stripslashes($v_sondage_reponses); $tmp = anti_html($v_sondage_reponses); $tmp = nl2br($tmp); $tmp=explode("<br />",$tmp); $tmpc=1+count($tmp); $v_sondage_reponses_prev="<u>".$langue['sondage_reponse_prev1']."</u><br /><br />"; $nbre_reponses_reelle=0; $v_sondage_reponses=""; for ($i=1;$i<$tmpc;$i++) { $sondage_tab_reponses[$i]=trim($tmp[$i-1]); if (strlen($sondage_tab_reponses[$i])>70) {$sondage_tab_reponses[$i]=substr($sondage_tab_reponses,0,70);} if ($sondage_tab_reponses[$i]<>"") { // mise en forme pour preview $v_sondage_reponses_prev.=$langue['sondage_reponse_prev3']." ".$i." : ".$sondage_tab_reponses[$i]."<br />"; // mise en forme pour enregistrement $v_sondage_tab_reponses[$i]=simpleslashes($sondage_tab_reponses[$i]); $v_sondage_reponses .= "\r\n".$v_sondage_tab_reponses[$i]; $nbre_reponses_reelle ++; } } $v_sondage_reponses_prev.="<br /><u>".$langue['sondage_reponse_prev2']."</u><br /><br />"; if ($nbre_reponses_reelle<2) { // si qu'une réponse saisie return false; } else { // on limite le choix à n-1 if ($v_sondage_nbre_reponse>=$nbre_reponses_reelle) { $v_sondage_nbre_reponse=$nbre_reponses_reelle-1; } } return true; } function f_sondage_enregistrer($sujet_id,$v_sondage_delai,$v_sondage_nbre_reponse,$v_sondage_tab_reponses) { global $langue,$sql,$bdd; $date_debut=time(); $date_fin=$v_sondage_delai; if ($v_sondage_delai<>0) { $date_fin=$date_debut+$v_sondage_delai*86400; } // On crée le sondage $sql = 'INSERT INTO ' . SONDAGE . ' (sujet_id, sondage_nbre_reponse, sondage_date_ouverture, sondage_date_cloture, sondage_nombre_vote) VALUES(\'' . $sujet_id . '\', \'' . $v_sondage_nbre_reponse . '\', \'' . $date_debut . '\', \'' . $date_fin . '\', \'0\' )'; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_insert'], 'sondage'), __LINE__, __FILE__, $sql, TRUE); } $i=0; $sql=""; foreach ($v_sondage_tab_reponses as $q ) { $i++; if ($i==1) { $sql =' (\'' . ($i) . '\', \'' . $sujet_id . '\', \'' . $q . '\', \'0\' ) '; } else { $sql.=', (\'' . ($i) . '\', \'' . $sujet_id . '\', \'' . $q . '\', \'0\' ) '; } } $sql = 'INSERT INTO ' . SONDAGE_VOTE . ' (sondage_reponse_num, sujet_id, sondage_reponse, sondage_votes) VALUES ' . $sql ; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_insert'], 'sondage_votes'), __LINE__, __FILE__, $sql, TRUE); } } function f_pas_de_vote($sujet_id) { global $langue,$sql,$bdd; // on regarde si il y a eu un vote $sql = 'SELECT sondage_nombre_vote FROM ' . SONDAGE . ' WHERE sujet_id = \'' . $sujet_id . '\''; if ( ! $result = $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'sondage'), __LINE__, __FILE__, $sql); } $temp = $bdd->tableau($result); return ( ( $temp['sondage_nombre_vote']>0 ) ? 0 : 1 ); } function f_lire_sondage($sujet_id) { global $langue, $bdd, $v_sondage_reponses, $v_sondage_nbre_reponse, $v_sondage_delai; $sql = 'SELECT * FROM ' . SONDAGE_VOTE . ' sv LEFT JOIN ' . SONDAGE . ' s ON s.sujet_id = sv.sujet_id WHERE sv.sujet_id = ' . $sujet_id . ' ORDER BY sv.sondage_reponse_num ASC'; if ( ! $result = $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_select'], 'sondage & sondage_vote'), __LINE__, __FILE__, $sql); } // // faire ici si on trouve pas de sondage bien que le sujet soit dit avec sondage message d'erreur? // $sondage_table = $bdd->tableau($result); if ($sondage_table['sondage_nombre_vote']==0) // pas de vote { $v_sondage_reponses = $sondage_table['sondage_reponse']; $v_sondage_nbre_reponse = $sondage_table['sondage_nbre_reponse']; $v_sondage_delai = ($sondage_table['sondage_date_cloture'] - $sondage_table['sondage_date_ouverture'] ) / 86400; if ($v_sondage_delai<0) { $v_sondage_delai = 0; } while($temp = $bdd->tableau($result)) { if (trim($temp['sondage_reponse'])<>"") { $v_sondage_reponses .= "\r\n".$temp['sondage_reponse']; } } } } function f_sondage_editer($sujet_id,$v_sondage_delai,$v_sondage_nbre_reponse,$v_sondage_tab_reponses) { global $langue,$sql,$bdd; $date_debut=time(); $date_fin=$v_sondage_delai; if ($v_sondage_delai<>0) { $date_fin=$date_debut+$v_sondage_delai*86400; } $sql = 'UPDATE ' . SONDAGE . ' SET sondage_nbre_reponse = \'' . $v_sondage_nbre_reponse . '\', sondage_date_ouverture = \'' . $date_debut . '\', sondage_date_cloture = \'' . $date_fin . '\', sondage_nombre_vote = \'' . 0 . '\' WHERE sujet_id = \'' . $sujet_id . '\' '; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_insert'], 'update_sondage'), __LINE__, __FILE__, $sql, TRUE); } $i=0; $sql=""; foreach ($v_sondage_tab_reponses as $q ) { $i++; $sql = 'UPDATE ' . SONDAGE_VOTE . ' SET sondage_reponse_num = \'' . ($i) . '\', sondage_reponse = \'' . $q . '\', sondage_votes = \'0\' WHERE sujet_id = \'' . $sujet_id . '\' AND sondage_reponse_num = \'' . ($i) . '\' '; if( ! $bdd->requete($sql) ) { info($langue['er_titre'], sprintf($langue['er_insert'], 'update_sondage_votes'), __LINE__, __FILE__, $sql, TRUE); } } } ?>






Et sinon ca marche trop bien ! 



