Nouvelle version du Tchat Date de sortie : 14/05/2010 Base : Xnova 0.8 SP1 Auteur : Winjet Version : 1.0 Nouvelles fonctionnalités : - Gestion des accents - Suppression automatique des messages de plus de 3 jours - Affichage de la date et de l'heure selon le fuseau horaire de Paris Si votre univers dispose de joueurs n'ayant pas le même fuseau horaire, vous pouvez venir me demander de l'aide sur la manière de procéder - Liste des joueurs connectés sur le Tchat - Couleur unique pour chaque membre du staff (Administrateur, Opérateur, Modérateur) - Possibilité d'envoyer un MP en cliquant sur le pseudo d'un joueur - Ascenseur qui apparait lorsqu'il y a pas assez de place pour faire apparaitre tous les messages - Idem pour la liste des connectés La prochaine version permettra au staff de modérer le Tchat On commence Oups, j'allais oublié le screen Cette fois, on commence chat.php : <?php
/** * chat.php * * @version 1.0 * @copyright 2008 by e-Zobar for XNova * * Modifié par Winjet */ define('INSIDE' , true); define('INSTALL' , false);
$xnova_root_path = './'; include($xnova_root_path . 'extension.inc'); include($xnova_root_path . 'common.' . $phpEx);
includeLang('chat'); $BodyTPL = gettemplate('chat_body');
$nick = $user['username']; $parse = $lang;
$NbreDaysDelMsg = 3; $QryDeleteOldMsg = <<<SQL DELETE FROM {{table}} WHERE `timestamp` <= UNIX_TIMESTAMP(NOW()) - (3600 * 24 * {$NbreDaysDelMsg}); SQL; // Les messages datant de plus de 3 jours // sont effacés doquery($QryDeleteOldMsg, 'chat'); $QrySelectUsers = <<<SQL SELECT `id`, `username`, `authlevel` FROM {{table}} WHERE (`current_page` LIKE '%chat_msg.php%' OR `current_page` LIKE '%chat.php%') AND `onlinetime` >= UNIX_TIMESTAMP(NOW()) - 300 ORDER BY `username` ASC; SQL; // On récupère les joueurs qui sont sur le chat // il y a moins de 5 minutes $Result = doquery($QrySelectUsers, 'users'); $parse['UsersConnected'] = ""; while( $TheUser = mysql_fetch_array($Result) ) { // Couleur personnalisée selon // le rang du joueur if ($TheUser['authlevel'] == 3) $color = "#FF0000"; elseif ($TheUser['authlevel'] == 2) $color = "#660066"; elseif ($TheUser['authlevel'] == 1) $color = "#006600"; else $color = "#FFFFFF"; $parse['UsersConnected'] .= <<<TXT <tr align="left"> <td class="c" style="background-image: none; border: 0px;"><a href="messages.php?mode=write&id={$TheUser['id']}" style="color: {$color};">{$TheUser['username']}</a></td> </tr> TXT; } $page = parsetemplate($BodyTPL, $parse); display($page, $lang['Chat'], false);
// Shoutbox by e-Zobar - Copyright XNova Team 2008 // Modifié par Winjet ?> chat_add.php <?php
/** * chat_add.php * * @version 1.0 * @copyright 2008 by e-Zobar for XNova * * Modifié par Winjet */
define('INSIDE' , true); define('INSTALL' , false);
$xnova_root_path = './'; include($xnova_root_path . 'extension.inc'); include($xnova_root_path . 'common.' . $phpEx);
// On récupère les informations du message et de l'envoyeur if (isset($_POST["msg"]) && isset($user['username'])) { $nick = trim (str_replace ("+","plus",$user['username'])); $msg = trim (str_replace ("+","plus",$_POST["msg"])); $msg = addslashes ($_POST["msg"]); $nick = addslashes ($user['username']); } else { $msg=""; $nick=""; }
// Ajout du message dans la database if ( !empty($msg) && !empty($nick) ) { $query = doquery("INSERT INTO {{table}}(user, message, timestamp) VALUES ('".$nick."', '".$msg."', '".time()."')", "chat"); }
// Shoutbox by e-Zobar - Copyright XNova Team 2008 // Modifié par Winjet ?> chat_msg.php <?php
/** * chat_msg.php * * @version 1.0 * @copyright 2008 by e-Zobar for XNova * * Modifié par Winjet */
define('INSIDE' , true); define('INSTALL' , false);
$xnova_root_path = './'; include($xnova_root_path . 'extension.inc'); include($xnova_root_path . 'common.' . $phpEx);
// On selectionne les messages présents dans la base de donnée $QrySelectMsg = <<<SQL SELECT c.user AS `user`, c.message AS `message`, c.timestamp AS `timestamp`, u.authlevel AS `authlevel`, u.id AS `id` FROM {{table}}chat AS c JOIN {{table}}users AS u ON c.user = u.username ORDER BY `messageid` ASC; SQL;
$query = doquery($QrySelectMsg, ''); while( $v = mysql_fetch_array($query) ) { // On se protège de certaines données // dangereuses $nick = htmlentities($v['user']); $msg = htmlentities(utf8_decode($v['message'])); $timestamp = intval($v['timestamp']); $authlevel = intval($v['authlevel']); $id = intval($v['id']);
// Les différentes polices (gras, italique, couleurs, etc...) $msg=preg_replace("#[a=(ft|https?://)(.+)](.+)[/a]#isU", "<a href="$1$2" target="_blank">$3</a>", $msg); $msg=preg_replace("#[b](.+)[/b]#isU","<b>$1</b>",$msg); $msg=preg_replace("#[i](.+)[/i]#isU","<i>$1</i>",$msg); $msg=preg_replace("#[u](.+)[/u]#isU","<u>$1</u>",$msg); $msg=preg_replace("#[c=(blue|yellow|green|pink|red|orange)](.+)[/c]#isU","<font color="$1">$2</font>",$msg);
// Les smileys avec leurs raccourcis $msg=preg_replace("#:c#isU","<img src="images/smileys/cry.png" align="absmiddle" title=":c" alt=":c">",$msg); $msg=preg_replace("#:/#isU","<img src="images/smileys/confused.png" align="absmiddle" title=":/" alt=":/">",$msg); $msg=preg_replace("#o0#isU","<img src="images/smileys/dizzy.png" align="absmiddle" title="o0" alt="o0">",$msg); $msg=preg_replace("#^^#isU","<img src="images/smileys/happy.png" align="absmiddle" title="^^" alt="^^">",$msg); $msg=preg_replace("##isU","<img src="images/smileys/lol.png" align="absmiddle" title="" alt="">",$msg); $msg=preg_replace("##isU","<img src="images/smileys/neutral.png" align="absmiddle" title="" alt="">",$msg); $msg=preg_replace("#:)#isU","<img src="images/smileys/smile.png" align="absmiddle" title=":)" alt=":)">",$msg); $msg=preg_replace("#:o#isU","<img src="images/smileys/omg.png" align="absmiddle" title=":o" alt=":o">",$msg); $msg=preg_replace("##isU","<img src="images/smileys/tongue.png" align="absmiddle" title="" alt="">",$msg); $msg=preg_replace("#:(#isU","<img src="images/smileys/sad.png" align="absmiddle" title=":(" alt=":(">",$msg); $msg=preg_replace("#;)#isU","<img src="images/smileys/wink.png" align="absmiddle" title=";)" alt=";)">",$msg); $msg=preg_replace("#:s#isU","<img src="images/smileys/shit.png" align="absmiddle" title=":s" alt=":s">",$msg); $msg=preg_replace("#xnova#","<a href="http://www.xnova.fr">XNova</a>",$msg);
// Couleur personnalisée selon // le rang du joueur
if ($authlevel == 3) $color = "#FF0000"; elseif ($authlevel == 2) $color = "#660066"; elseif ($authlevel == 1) $color = "#006600"; else $color = "#FFFFFF"; date_default_timezone_set("Europe/Paris"); $TimeText = strftime("[%d/%m/%Y]", $timestamp) . ' ' . strftime("[%H:%M]", $timestamp); // Affichage du message $msg = <<<TXT <div align="left"> {$TimeText} <a href="messages.php?mode=write&id={$id}" style="color: {$color};">{$nick}</a> > {$msg}<br /> </div> TXT; print stripslashes($msg); } // Shoutbox by e-Zobar - Copyright XNova Team 2008 // Modifié par Winjet ?> templates/OpenGame/chat_body.tpl <script language="JavaScript" type="text/javascript" src="scripts/chat.js"></script>
<table align="center"> <tbody> <tr> <td class="c"> <b>{chat_disc}</b> </td> <td class="c" width="150">Liste des connectés</td> </tr>
<tr> <th width="500"> <div id="shoutbox" style="margin: 5px; vertical-align: text-top; height: 305px; overflow:visible;"></div> </th> <th valign="top" width="150" style="overflow:hidden;"> <table> {UsersConnected} </table> </th> </tr>
<tr> <th colspan="2">{chat_message} : <input name="msg" type="text" id="msg" size="130" maxlength="100" onKeyPress="if(event.keyCode == 13){ addMessage(); } if (event.keyCode==60 || event.keyCode==62) event.returnValue = false; if (event.which==60 || event.which==62) return false;"> <input type="button" name="send" value="{chat_send}" id="send" onClick="addMessage()"></th> </tr> </tbody> </table>
<br />
<table width="355" align="center"> <tbody> <tr> <td colspan="2" class="c"> <b>{chat_short}</b> </td> </tr>
<tr> <th colspan="2"> <img src="images/smileys/cry.png" align="absmiddle" title=":c" alt=":c" width="12" height="12" onClick="addSmiley(':c')" /> <img src="images/smileys/confused.png" align="absmiddle" title=":/" alt=":/" width="12" height="12" onClick="addSmiley(':/')" /> <img src="images/smileys/dizzy.png" align="absmiddle" title="o0" alt="o0" width="12" height="12" onClick="addSmiley('o0')" /> <img src="images/smileys/happy.png" align="absmiddle" title="^^" alt="^^" width="12" height="12" onClick="addSmiley('^^')" /> <img src="images/smileys/lol.png" align="absmiddle" title="" alt="" width="12" height="12" onClick="addSmiley('')" /> <img src="images/smileys/neutral.png" align="absmiddle" title="" alt="" width="12" height="12" onClick="addSmiley('')" /> <img src="images/smileys/smile.png" align="absmiddle" title=":)" alt=":)" width="12" height="12" onClick="addSmiley(':)')" /> <img src="images/smileys/omg.png" align="absmiddle" title=":o" alt=":o" width="12" height="12" onClick="addSmiley(':o')" /> <img src="images/smileys/tongue.png" align="absmiddle" title="" alt="" width="12" height="12" onClick="addSmiley('')" /> <img src="images/smileys/sad.png" align="absmiddle" title=":(" alt=":(" width="12" height="12" onClick="addSmiley(':(')" /> <img src="images/smileys/wink.png" align="absmiddle" title=";)" alt=";)" width="12" height="12" onClick="addSmiley(';)')" /> <img src="images/smileys/shit.png" align="absmiddle" title=":s" alt=":s" width="12" height="12" onClick="addSmiley(':s')" /> </th> </tr>
<tr> <th width="60"> <b>{chat_text}</b><br /> <i>{chat_text}</i><br /> <u>{chat_text}</u><br /> <a href="http://www.site.com" target="_blank">{chat_text}</a><br /> <font color="red">{chat_text}</font> </th>
<th> [b]{chat_text}[/b]<br /> [i]{chat_text}[/i]<br /> [u]{chat_text}[/u]<br /> [a=http://www.site.com]{chat_text}[/a]<br /> [c=blue|yellow|green|pink|red|orange]{chat_text}[/c] </th> </tr> </tbody> </table> |