Wie könnt man in den Instant Messenger den BBCode mit einbinden?`
Wichtig wäre, das die Badword Liste vom BBCode auch im IM funktioniert.
<?php
defined ('main') or die ( 'no direct access' );
if ( loggedin() ) {
if ($_GET['messenger'] == "chatheartbeat") { chatHeartbeat(); }
if ($_GET['messenger'] == "sendchat") { sendChat(); }
if ($_GET['messenger'] == "closechat") { closeChat(); }
if ($_GET['messenger'] == "startchatsession") { startChatSession(); }
if (!isset($_SESSION['chatHistory'])) {
$_SESSION['chatHistory'] = array();
}
if (!isset($_SESSION['openChatBoxes'])) {
$_SESSION['openChatBoxes'] = array();
}
} else {
if ($_GET['messenger'] == "chatheartbeat") {
if ( isset ( $_SESSION['guestblock'] ) ) {
echo '{"items":[{"s":"0","i":"'.$_SESSION['guestblock'].'","f":"System","m":"<i>Es können nur Mitglieder an dieser Sitzung teilnehmen.</i>"}]}';
unset( $_SESSION['guestblock'] );
} else {
echo '{"items":[]}';
}
}
if ($_GET['messenger'] == "sendchat") {
$_SESSION['guestblock'] = escape($_POST['eid'],'integer');
echo '1';
}
if ($_GET['messenger'] == "startchatsession") {
echo '{"username":"Gast","items":[]}';
}
if (isset($_SESSION['chatHistory'])) {
unset($_SESSION['chatHistory']);
}
if (isset($_SESSION['openChatBoxes'])) {
unset($_SESSION['openChatBoxes']);
}
exit;
}
function chatHeartbeat() {
$sql = 'SELECT * FROM `prefix_messenger` WHERE (`eid` = '.$_SESSION['authid'].' AND `recd` = 0) ORDER BY `id` ASC';
$query = db_query($sql);
$items = '';
$chatBoxes = array();
while ($chat = db_fetch_assoc($query)) {
if (!isset($_SESSION['openChatBoxes'][$chat['aid']]) && isset($_SESSION['chatHistory'][$chat['aid']])) {
$items = $_SESSION['chatHistory'][$chat['aid']];
}
$chat['txt'] = sanitize($chat['txt']);
$items .= '{"s":"0","i":"'.$chat['aid'].'","f":"'.utf8_encode(get_n($chat['aid'])).'","m":"'.$chat['txt'].'"},';
if (!isset($_SESSION['chatHistory'][$chat['aid']])) {
$_SESSION['chatHistory'][$chat['aid']] = '';
}
$_SESSION['chatHistory'][$chat['aid']] .= '{"s":"0","i":"'.$chat['aid'].'","f":"'.utf8_encode(get_n($chat['aid'])).'","m":"'.$chat['txt'].'"},';
unset($_SESSION['tsChatBoxes'][$chat['aid']]);
$_SESSION['openChatBoxes'][$chat['aid']] = $chat['sent'];
}
if (!empty($_SESSION['openChatBoxes'])) {
foreach ($_SESSION['openChatBoxes'] as $chatbox => $time) {
if (!isset($_SESSION['tsChatBoxes'][$chatbox])) {
$now = time()-strtotime($time);
$time = date('d.M H:i', strtotime($time));
$message = "Geschrieben am: $time Uhr" ;
if ($now > 180) {
$items .= '{"s":"2","i":"'.$chatbox.'","f":"'.utf8_encode(get_n($chatbox)).'","m":"'.$message.'"},';
if (!isset($_SESSION['chatHistory'][$chatbox])) {
$_SESSION['chatHistory'][$chatbox] = '';
}
$_SESSION['chatHistory'][$chatbox] .= '{"s":"2","i":"'.$chatbox.'","f":"'.utf8_encode(get_n($chatbox)).'","m":"'.$message.'"},';
$_SESSION['tsChatBoxes'][$chatbox] = 1;
}
}
}
}
$sql = 'UPDATE `prefix_messenger` SET `recd` = 1 WHERE `eid` = '.$_SESSION['authid'].' AND `recd` = 0';
$query = db_query($sql);
if ($items != '') {
$items = substr($items, 0, -1);
}
header('Content-type: application/json');
echo '{"items":['.$items.']}';
exit(0);
}
function chatBoxSession($chatbox) {
$items = '';
if (isset($_SESSION['chatHistory'][$chatbox])) {
$items = $_SESSION['chatHistory'][$chatbox];
}
return $items;
}
function startChatSession() {
$items = '';
if (!empty($_SESSION['openChatBoxes'])) {
foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) {
$items .= chatBoxSession($chatbox);
}
}
if ($items != '') {
$items = substr($items, 0, -1);
}
header('Content-type: application/json');
echo '{"username":"'.$_SESSION['authname'].'","items":['.$items.']}';
exit(0);
}
function sendChat() {
$aid = $_SESSION['authid'];
$eid = escape($_POST['eid'],'integer');
$txt = escape($_POST['txt'],'string');
$_SESSION['openChatBoxes'][$eid] = date('Y-m-d H:i:s', time());
$c_txt = sanitize($txt);
if (!isset($_SESSION['chatHistory'][$_POST['eid']])) {
$_SESSION['chatHistory'][$_POST['eid']] = '';
}
$_SESSION['chatHistory'][$_POST['eid']] .= '{"s":"1","i":"'.$eid.'","f":"'.utf8_encode(get_n($eid)).'","m":"'.$c_txt.'"},';
unset($_SESSION['tsChatBoxes'][$_POST['eid']]);
$sql = 'INSERT INTO `prefix_messenger` (`aid`,`eid`,`txt`,`sent`) VALUES ('.$aid.','.$eid.',"'.$txt.'",NOW())';
db_query($sql);
echo "1";
exit(0);
}
function closeChat() {
unset($_SESSION['openChatBoxes'][$_POST['chatbox']]);
echo "1";
exit(0);
}
function sanitize($text) {
$text = htmlspecialchars($text, ENT_QUOTES);
$text = str_replace("\n\r","\n",$text);
$text = str_replace("\r\n","\n",$text);
$text = str_replace("\n","<br>",$text);
return $text;
}
?>
Hatten das mal so versucht hier z.B
$txt = escape($_POST['txt'],'string');
in
$txt = bbcode(escape($_POST['txt'],'string'));
leider ohne Erfolg
betroffene Homepage: externer Link
Zuletzt modifiziert von IRvD am 25.10.2012 - 00:05:04

