function chat_msg($o_id, $u_id, $u_name, $u_farbe, $admin, $r_id, $text, $typ) { // Schreibt Text in Raum r_id // User, u_id, Farbe, Raum und Typ der Nachricht werden übergeben // Vor Schreiben wird der Text geparsed und die Aktionen ausgeführt // Art: N: Normal // S: Systemnachricht // P: Privatnachticht // H: Versteckte Nachricht // $raum_einstellungen und $ist_moderiert wurde von raum_ist_moderiert() gesetzt global $mainchat_version, $akdbase, $conn, $dbase, $user_farbe, $hilfstext, $system_farbe, $moderationsmodul; global $chat, $timeout, $chat_url, $datei_spruchliste, $t, $id, $ak, $check_name, $f1, $f2, $raumstatus1; global $u_farbe_alle, $u_farbe_sys, $u_farbe_priv, $u_farbe_noise, $u_farbe_bg, $u_clearedit, $raum_max; global $u_nick, $id, $http_host, $lobby, $o_raum, $o_js, $o_knebel, $r_status1, $u_level, $leveltext, $max_user_liste; global $communityfeatures, $o_punkte, $beichtstuhl, $raum_einstellungen, $ist_moderiert, $ist_eingang, $userdata, $lustigefeatures; global $punkte_ab_user, $punktefeatures, $whotext, $knebelzeit, $nickwechsel, $raumanlegenpunkte, $o_dicecheck; global $einstellungen_aendern, $single_room_verhalten, $eingabe_light_farbe, $eingabe_light_hilfe; // Text $text parsen, Befehle ausführen, Texte im Chat ausgeben // Voreinstellung für Nachrichtenfilter $privat = FALSE; // N als Voreinstellung setzen $typ or $typ = "N"; // Farbe voreinstellen $u_farbe or $u_farbe = $user_farbe; // Verbotene Zeichen filtern $text = preg_replace("/[" . chr(1) . "-" . chr(31) . "]/", "", $text); $text = str_replace(chr(173), "", $text); // autoknebel - ist text unerwünscht? Falls ja, User automatisch knebeln $text = auto_knebel($text); // Eingabe parsen $chatzeile = explode(" ", $text, 4); if (!isset($chatzeile[1])) { $chatzeile[1] = ""; } if (!isset($chatzeile[2])) { $chatzeile[2] = ""; } if (!isset($chatzeile[3])) { $chatzeile[3] = ""; } switch (strtolower($chatzeile[0])) { case "/besitze": case "/besitzeraum": // Übernimmt Besitzrechte eines Raums if (!$admin) { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } else { $query = "SELECT r_id,o_name,r_name FROM raum,online " . "WHERE r_besitzer=o_user AND " . ($chatzeile[1] ? "r_name LIKE '" . mysql_real_escape_string($chatzeile[1]) . "'" : "r_id={$r_id}"); $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); if ($rows == 0) { // nix gefunden. Besitzer evtl. nicht mehr existent? // neue query ohne r_besitzer $keinbesitzer = 1; $query = "SELECT r_id,r_name FROM raum WHERE " . ($chatzeile[1] ? "r_name LIKE '" . mysql_real_escape_string($chatzeile[1]) . "'" : "r_id={$r_id}"); $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); } if ($rows == 1) { if (!$keinbesitzer) { $uu_name = mysql_result($result, 0, "o_name"); } else { $uu_name = "Nobody"; } $rr_id = mysql_result($result, 0, "r_id"); $rr_name = mysql_result($result, 0, "r_name"); // Raum ändern $f['r_besitzer'] = $u_id; schreibe_db("raum", $f, $r_id, "r_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%rr_name%", $rr_name, str_replace("%uu_name%", $uu_name, str_replace("%u_name%", $u_name, $t['chat_msg2'])))); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg3']); } } break; case "/oplist": // Admins auflisten if ($admin || $u_level == "A") { $query = "SELECT o_userdata,o_userdata2,o_userdata3,o_userdata4,o_level,r_name, " . "UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_login) AS online " . "FROM online left join raum on r_id=o_raum " . "WHERE (o_level='S' OR o_level='C' OR o_level='A') " . "ORDER BY r_name"; $result = mysql_query($query, $conn); if ($result and mysql_num_rows($result) > 0) { while ($row = mysql_fetch_object($result)) { $userdaten = unserialize($row->o_userdata . $row->o_userdata2 . $row->o_userdata3 . $row->o_userdata4); $txt = ""; if ($row->r_name && $row->r_name != "NULL") { $raumname = $row->r_name; } else { $raumname = "[" . $whotext[2] . "]"; } if (!$userdaten[u_away]) { $txt .= "<B>" . $raumname . ":</B> " . user($userdaten[u_id], $userdaten, TRUE, TRUE, " ", $row->online, "", FALSE); } else { $txt .= $raumname . ": " . user($userdaten[u_id], $userdaten, TRUE, FALSE, " ", "", "", FALSE) . " -> " . $userdaten[u_away]; } system_msg("", 0, $u_id, $system_farbe, $txt); } mysql_free_result($result); } } break; case "/op": // Nachrichten zwischen den Admins austauschen // Nachrichten zwischen den Admins austauschen case "/int": // Admin um Hilfe rufen. if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { if ($o_knebel > 0) { // user ist geknebelt... $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", 0, $u_id, $system_farbe, $txt); break; } // Smilies parsen $privat = TRUE; $query = "SELECT r_name FROM raum WHERE r_id={$o_raum}"; $result = mysql_query($query, $conn); $r_name = mysql_result($result, 0, "r_name"); $tempadm = ""; if (strtolower($chatzeile[0] != "/int")) { $tempadm = " OR o_level='A'"; } $query = "SELECT o_user FROM online WHERE (o_level='S' OR o_level='C'{$tempadm})"; $result = mysql_query($query, $conn); if ($result > 0) { $nums = mysql_num_rows($result); if ($nums > 0) { // die Nachricht wurde weitergeleitet. $txt = html_parse($privat, htmlspecialchars($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3])); if (!($admin || $u_level == "A")) { // Admins wissen, daß das an alle Admins geht. daher nicht nötig. system_msg("", 0, $u_id, $system_farbe, $t['chat_msg47']); $txt = "<b>" . $txt . "</b>"; } if (strtolower($chatzeile[0]) == "/int") { $txt2 = "<b>[====={$t['chat_msg52']} " . $t['chat_msg51'] . "=====]</b> " . $txt; } else { $txt2 = "<b>[" . $t['chat_msg52'] . " " . $t['chat_msg50'] . "]</b> " . $txt; } while ($row = mysql_fetch_array($result)) { $text = str_replace("%user%", user($u_id, $userdata, TRUE, FALSE, " ", "", "", FALSE), $t['chat_msg49']); $text = str_replace("%raum%", $r_name, $text); if (!($admin || $u_level == "A")) { // User aus Raum... ruft um hilfe system_msg("", $u_id, $row['o_user'], $system_farbe, $text); } if (($admin || $u_level == "A") && $row['o_user'] == $u_id) { // falls eigener nick: if (strtolower($chatzeile[0]) == "/int") { system_msg("", $u_id, $u_id, $system_farbe, "<B>" . user($u_id, $userdata, TRUE, FALSE, " ", "", "", FALSE) . " ===== {$t['chat_msg24']} {$t['chat_msg51']}: =====</B> {$txt}"); } else { system_msg("", $u_id, $u_id, $system_farbe, "<B>" . user($u_id, $userdata, TRUE, FALSE, " ", "", "", FALSE) . " {$t['chat_msg24']} {$t['chat_msg50']}: </B> {$txt}"); } } else { priv_msg($u_name, $u_id, $row['o_user'], $u_farbe, $txt2, $userdata); } } } else { // kein Admin im Chat :-( system_msg("", $u_id, $u_id, $system_farbe, $t['chat_msg48']); } mysql_free_result($result); } } break; case "/dupes": // sucht nach doppelten IPs if ($admin) { $query = "SELECT o_ip,o_user,o_raum,o_browser,r_name,o_name " . "FROM online left join raum on o_raum=r_id " . "WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} " . "ORDER BY o_ip"; $result = mysql_query($query, $conn); if ($result > 0) { while ($row = mysql_fetch_array($result)) { if ($row['o_ip'] == $alt['o_ip']) { $hostname = htmlspecialchars(@gethostbyaddr($row['o_ip'])); if (!$shown) { $dupecount++; unset($userdaten); $userdaten = array(u_id => $alt[o_user], u_nick => $alt[o_name]); $txt = "<BR><b>" . $hostname . "(" . $alt['o_ip'] . "):</b>"; $txt .= "<br><b>" . $alt['r_name'] . " " . user($alt[o_user], $userdaten, $o_js, FALSE, " ", "", "", FALSE) . "</b> " . htmlspecialchars($alt[o_browser]) . "<br>"; $shown = true; } unset($userdaten); $userdaten = array(u_id => $row[o_user], u_nick => $row[o_name]); $txt .= "<b>" . $row['r_name'] . " " . user($row[o_user], $userdaten, $o_js, FALSE, " ", "", "", FALSE) . "</b> " . htmlspecialchars($row[o_browser]); system_msg("", 0, $u_id, $system_farbe, $txt); $txt = ""; } else { $shown = false; } $alt = $row; } if ($dupecount > 0) { system_msg("", 0, $u_id, $system_farbe, "<BR>\n" . $t['chat_msg45']); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg46']); } } } break; case "/pp": case "/ip": if (!$admin) { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); break; } unset($onlineip); unset($onlinedatum); if (!$chatzeile[1]) { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg119']); break; } if ($admin && preg_match("/^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\$/", $chatzeile[1])) { $onlineip = $chatzeile[1]; } else { if ($admin) { $nick = nick_ergaenze($chatzeile[1], "online", 1); if ($nick['u_nick'] != "") { $query = "SELECT o_ip FROM online WHERE o_user = {$nick['u_id']}"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $o_nick = mysql_fetch_array($result); $onlineip = $o_nick[o_ip]; unset($o_nick); } @mysql_free_result($result); } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $chatzeile[1], $t['chat_msg120'])); // Nick nich Online - Hole IP aus History der Usertabelle $query = "SELECT u_nick,u_id,u_ip_historie FROM user " . "WHERE u_nick='" . mysql_real_escape_string(coreCheckName($chatzeile[1], $check_name)) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $nick = mysql_fetch_array($result); $uu_ip_historie = unserialize($nick['u_ip_historie']); if (is_array($uu_ip_historie)) { while (list($onlinedatum, $onlineip) = each($uu_ip_historie)) { break; } $temp = $t['chat_msg123']; $temp = str_replace("%datum%", date("d.m.y H:i", $onlinedatum), $temp); $temp = str_replace("%ip%", $onlineip, $temp); system_msg("", 0, $u_id, $system_farbe, $temp); } } @mysql_free_result($result); } } } if ($admin && $onlineip) { $temp = $t['chat_msg122']; $temp = str_replace("%datum%", strftime('%d.%m.%Y'), $temp); $temp = str_replace("%uhrzeit%", strftime('%H:%M:%S'), $temp); $temp = str_replace("%ip%", $onlineip, $temp); system_msg("", 0, $u_id, $system_farbe, $temp); $query = "SELECT o_ip,o_user,o_raum,o_browser,r_name,o_name " . "FROM online left join raum on o_raum=r_id " . "WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} " . "AND o_ip = '" . mysql_real_escape_string($onlineip) . "' " . "ORDER BY o_user"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) >= 1) { $txt = ""; while ($row = mysql_fetch_array($result)) { $userdaten = array(u_id => $row[o_user], u_nick => $row[o_name]); $txt .= "<b>" . $row['r_name'] . " " . user($row[o_user], $userdaten, $o_js, FALSE, " ", "", "", FALSE) . "</b> " . htmlspecialchars($row[o_browser]) . "<br>"; } system_msg("", 0, $u_id, $system_farbe, $txt); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg121']); } @mysql_free_result($result); } break; case "/edithistory": case "/edithistorie": if ($admin) { $nick = nick_ergaenze($chatzeile[1], "online", 1); // Falls keinen Empfänger gefunden, in Usertabelle nachsehen if ($nick['u_nick'] == "") { $query = "SELECT u_nick,u_id from user WHERE u_nick='" . mysql_real_escape_string(coreCheckName($chatzeile[1], $check_name)) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $nick = mysql_fetch_array($result); } @mysql_free_result($result); } if ($nick['u_nick'] != "") { $query = "SELECT u_profil_historie FROM user WHERE u_nick = '{$nick['u_nick']}'"; $result = mysql_query($query); $bla = mysql_fetch_array($result); $uu_profil_historie = unserialize($bla[u_profil_historie]); } else { system_msg("", 0, $u_id, $system_farbe, "Es konnte kein eindeutiger Nick gefunden werden!"); } if (is_array($uu_profil_historie)) { system_msg("", 0, $u_id, $system_farbe, "Das Profil von <b>{$nick['u_nick']}</b> wurde zuletzt geändert von: "); while (list($datum, $nick) = each($uu_profil_historie)) { $zeile = $nick . " (" . str_replace(" ", " ", date("d.m.y H:i", $datum)) . ")" . $f4; system_msg("", 0, $u_id, $system_farbe, $zeile); } } } else { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } break; case "/knebel": case "/gag": case "/gaga": // /gag - zeige alle geknebelten user // /gag user - sperre user für 5 min // /gag user x - sperre user für x min // /gag user 0 - freigabe... if (!$admin and $u_level != "A") { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); break; } if (!isset($chatzeile[1]) || $chatzeile[1] == "") { // Kurzhilfe ausgeben. $temp = $t['knebel2']; $temp = str_replace("%chatzeile%", $chatzeile[0], $temp); system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}</b>: {$temp}"); } else { // knebel setzen, default=5 min... if (!$knebelzeit) { $knebelzeit = 5; } // knebelzeit übergeben? dann setzen, absolut, vorzeichen ignorieren if (isset($chatzeile[2]) && $chatzeile[2] != "") { $knebelzeit = abs(intval($chatzeile[2])); } // maximal 1440 Minuten if ($knebelzeit > 1440) { $knebelzeit = 1440; } // User finden, zuerst im aktuellen Raum, dann global $nick = nick_ergaenze($chatzeile[1], "raum", 1); if (!$nick['u_nick']) { $nick = nick_ergaenze($chatzeile[1], "online", 0); } // Admins dürfen, if ($nick['u_nick']) { switch ($nick['u_level']) { case "C": case "S": case "M": case "A": $txt = str_replace("%admin%", $nick['u_nick'], $t['knebel5']); system_msg("", 0, $u_id, $system_farbe, $txt); break; default: $query = "update online set o_knebel=FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())+" . intval($knebelzeit) . "*60) " . "where o_user={$nick['u_id']}"; mysql_query($query, $conn); $txt = $knebelzeit ? $t['knebel4'] : $t['knebel3']; $txt = str_replace("%admin%", $u_nick, $txt); $txt = str_replace("%user%", $nick['u_nick'], $txt); $txt = str_replace("%zeit%", $knebelzeit, $txt); global_msg($u_id, $o_raum, $txt); } } } // knebel listen if ($chatzeile[0] == "/gaga" && $admin) { $query = "select o_id,o_raum,o_user,o_userdata,o_userdata2,o_userdata3,o_userdata4," . "UNIX_TIMESTAMP(o_knebel)-UNIX_TIMESTAMP(NOW()) as knebel from online " . "where o_knebel>NOW()"; } else { $query = "select o_id,o_raum,o_user,o_userdata,o_userdata2,o_userdata3,o_userdata4," . "UNIX_TIMESTAMP(o_knebel)-UNIX_TIMESTAMP(NOW()) as knebel from online " . "where o_raum={$o_raum} AND o_knebel>NOW()"; } $result = mysql_query($query, $conn); $txt = ""; if ($result > 0) { $rows = mysql_num_rows($result); for ($i = 0; $i < $rows; $i++) { $row = mysql_fetch_object($result); if ($txt != "") { $txt .= ", "; } $userdaten = unserialize($row->o_userdata . $row->o_userdata2 . $row->o_userdata3 . $row->o_userdata4); $txt .= user($row->o_user, $userdaten, TRUE, FALSE, " ", "", "", FALSE) . " " . gmdate("H:i:s", $row->knebel); } mysql_free_result($result); } else { system_msg("", 0, $u_id, $system_farbe, "Fehler beim Zugriff auf die Datenbank. <!--" . mysql_errno() . " " . mysql_error() . "-->"); } if ($txt != "") { system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}</b>:{$t['knebel1']}: " . $txt); } break; case "/einlad": case "/invite": // Einladen in Räume... darf nur Admin oder Raumbesitzer // Besitzer des aktuellen Raums ermitteln $query = "SELECT r_besitzer,r_name from raum WHERE r_id={$r_id} "; $result = mysql_query($query, $conn); if ($result > 0) { $rows = mysql_num_rows($result); if ($rows == 1) { $r_besitzer = mysql_result($result, 0, "r_besitzer"); $r_name = mysql_result($result, 0, "r_name"); } mysql_free_result($result); } if ($admin || $r_besitzer == $u_id) { if ($chatzeile[1] != "") { // user eintragen oder löschen // schaue zuerst, ob online ein User ist, der genauso heisst wie angegeben $nick = nick_ergaenze($chatzeile[1], "online", 1); if ($nick['u_nick'] == $chatzeile[1]) { } else { $nick['u_nick'] == ""; } if ($nick['u_nick'] == "") { $nick = nick_ergaenze($chatzeile[1], "raum", 1); } if ($nick['u_nick'] == "") { $nick = nick_ergaenze($chatzeile[1], "online", 1); } if ($nick['u_nick'] == "") { $nick = nick_ergaenze($chatzeile[1], "chat", 0); } if ($nick['u_nick'] != "") { // nick gefunden. jetzt eintragen oder löschen... $query = "SELECT inv_user FROM invite WHERE inv_raum={$r_id} AND inv_user={$nick['u_id']}"; $result = mysql_query($query, $conn); if ($result > 0) { if (mysql_num_rows($result) > 0) { $query = "DELETE FROM invite WHERE inv_raum={$r_id} AND inv_user={$nick['u_id']}"; $result2 = mysql_query($query, $conn); $msg = $t['invite4']; } else { $f['inv_id'] = 0; $f['inv_user'] = $nick['u_id']; $f['inv_raum'] = $r_id; schreibe_db("invite", $f, $f['inv_id'], "inv_id"); if (!$beichtstuhl) { $msg = str_replace("%admin%", $u_nick, $t['invite5']); } else { $msg = str_replace("%admin%", $u_nick, $t['invite6']); } $msg = str_replace("%raum%", $r_name, $msg); system_msg($u_nick, $u_id, $nick['u_id'], $system_farbe, $msg); $msg = $t['invite3']; } // altes result löschen. mysql_free_result($result); $msg = str_replace("%admin%", $u_nick, $msg); $msg = str_replace("%raum%", $r_name, $msg); $msg = str_replace("%user%", $nick['u_nick'], $msg); global_msg($u_id, $o_raum, "{$msg}"); } } else { // Nick nicht gefunden, d.h. nicht Online, aber vielleicht doch eingeladen zum runterwerfen? $query = "SELECT u_nick,u_id from user,invite " . "WHERE inv_raum={$r_id} AND inv_user=u_id AND u_nick='" . mysql_real_escape_string($chatzeile[1]) . "'" . "ORDER BY u_nick"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $row = mysql_fetch_object($result); $query2 = "DELETE FROM invite WHERE inv_raum={$r_id} AND inv_user={$row->u_id}"; $result2 = mysql_query($query2, $conn); $msg = $t['invite4']; $msg = str_replace("%admin%", $u_nick, $msg); $msg = str_replace("%raum%", $r_name, $msg); $msg = str_replace("%user%", $row->u_nick, $msg); global_msg($u_id, $o_raum, "{$msg}"); @mysql_free_result($result2); } @mysql_free_result($result); } } // Invite-Liste ausgeben... $query = "SELECT u_id,u_nick,u_level,u_punkte_gesamt,u_punkte_gruppe,inv_id " . "FROM invite LEFT JOIN user ON u_id=inv_user " . "WHERE inv_raum={$r_id}"; $result = mysql_query($query, $conn); $txt = ""; if ($result && mysql_num_rows($result) > 0) { while ($row = mysql_fetch_object($result)) { if ($row->u_id && $row->u_id != "NULL") { if ($txt != "") { $txt .= ", "; } $txt .= user($row->u_id, $row, TRUE, FALSE, " ", "", "", FALSE); } else { $query = "DELETE FROM invite WHERE inv_id={$row->inv_id}"; $result2 = mysql_query($query, $conn); } } } if ($txt == "") { $txt = $t['invite2']; } else { $txt = $t['invite1'] . " " . $txt; } system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}:</b> {$txt}"); } break; case "/such": case "/suche": // Gibt Spruchliste aus if (!isset($chatzeile[1])) { $chatzeile[1] = ""; } $suchtext = preg_replace("/[*%\$!?.,;:\\/]/i", "", $chatzeile[1]); if (strlen($suchtext) > 2) { // Sprüche in Array lesen $spruchliste = file("conf/{$datei_spruchliste}"); // Treffer ausgeben reset($spruchliste); $anzahl = count($spruchliste); $i = 0; while ($i < $anzahl) { $spname = key($spruchliste); if (preg_match("/" . $suchtext . "/i", $spruchliste[$spname])) { $spruchtmp = preg_split("/\t/", substr($spruchliste[$spname], 0, strlen($spruchliste[$spname]) - 1), 3); $spruchtmp[2] = str_replace("<", "<", $spruchtmp[2]); $spruchtmp[2] = str_replace(">", ">", $spruchtmp[2]); $spruchtmp[2] = preg_replace('|\\*(.*?)\\*|', '<i>\\1</i>', preg_replace('|_(.*?)_|', '<b>\\1</b>', $spruchtmp[2])); $txt = "<B>{$t['chat_msg4']} <I>" . $spruchtmp[0] . " " . $spruchtmp[1] . "</I></B> <" . $spruchtmp[2] . ">"; system_msg("", 0, $u_id, $system_farbe, $txt); } next($spruchliste); $i++; } } else { // Fehler ausgeben system_msg("", 0, $u_id, $system_farbe, $t['chat_msg5']); } break; case "/ende": case "/exit": case "/quit": case "/bye": // Ende-Nachricht absetzen? if (strlen($chatzeile[1]) > 0) { hidden_msg($u_name, $u_id, $u_farbe, $r_id, $u_name . "{$t['chat_msg6']} " . html_parse($privat, htmlspecialchars($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3]))); } // Logoff verlasse_chat($u_id, $u_name, $r_id); sleep(2); logout($o_id, $u_id, "/quit"); echo "<HTML><BODY onLoad='javascript:parent.location.href=\"index.php?http_host={$http_host}\";'>\n"; echo "</BODY></HTML>\n"; exit; break; case "/ig": case "/ignore": case "/ignoriere": // User ignorieren oder freigeben if (!$beichtstuhl && strlen($chatzeile[1]) > 0 && $u_level != "G") { // Username angegeben -> ignorieren oder aufheben // versuchen, den namen zu ergänzen. // wenn geschafft, dann ist User auch online. Somit kann er ignoriert werden. // sonst evtl. DB Probs weil der expire evtl. user löscht, die hier gerade // eingetragen werden. $nick = nick_ergaenze($chatzeile[1], "online", 0); if ($nick['u_nick'] != "") { $i_user_passiv = $nick['u_id']; $i_user_name_passiv = $nick['u_nick']; // testen, ob nicht DAU sich selbst ignoriert... if ($i_user_passiv != $u_id) { ignore($o_id, $u_id, $u_name, $i_user_passiv, $i_user_name_passiv); } else { system_msg("", 0, $u_id, $u_farbe, $t['chat_msg7']); } } else { // user nicht gefunden oder nicht online? dann testen, ob ignoriert, damit man das // ignore auch wieder raus bekommt. $query = "SELECT u_nick,u_id from user,iignore " . "WHERE i_user_aktiv={$u_id} AND i_user_passiv=u_id AND u_nick='" . mysql_real_escape_string($chatzeile[1]) . "'" . "ORDER BY u_nick"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $row = mysql_fetch_object($result); ignore($o_id, $u_id, $u_name, $row->u_id, $row->u_nick); } @mysql_free_result($result); } } // Prüfung sollte nach dem Einfügen sein, denn sonst können 17 User drauf sein // Prüfung, ob bereits mehr als 16 user ignoriert werden // Alle ignorierten user > 16 werden gelöscht // Wenn mehr als 16 gebraucht werden, grössere Änderung in Tabelle online Feld o_ignore // Denn da passt nur ein Array mit 255 chars rein. $query = "SELECT u_nick,u_id from user,iignore " . "WHERE i_user_aktiv={$u_id} AND u_id=i_user_passiv order by i_id"; $result = @mysql_query($query, $conn); $anzahl = @mysql_num_rows($result) - 16; if ($result && $anzahl > 0) { for ($i = 0; $i < $anzahl; $i++) { $row = @mysql_fetch_object($result); ignore($o_id, $u_id, $u_name, $row->u_id, $row->u_nick); } } @mysql_free_result($result); if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { // Liste der User ausgeben, die von mir ignoriert werden $query = "SELECT i_id,u_id,u_nick,u_level,u_punkte_gesamt,u_punkte_gruppe " . "FROM iignore LEFT JOIN user on i_user_passiv=u_id " . "WHERE i_user_aktiv={$u_id} ORDER BY u_nick,i_id"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { $i = 0; $text = str_replace("%u_name%", $u_name, $t['chat_msg10']); while ($row = mysql_fetch_object($result)) { if ($row->u_id && $row->u_id != "NULL") { if ($i > 0) { $text = $text . ", "; } $text = $text . user($row->u_id, $row, TRUE, FALSE, " ", "", "", FALSE); } else { $query = "DELETE FROM iignore WHERE i_id={$row->i_id}"; $result2 = mysql_query($query, $conn); } $i++; } system_msg("", 0, $u_id, $system_farbe, $text . ""); } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $u_name, $t['chat_msg9'])); } @mysql_free_result($result); // Liste der User ausgeben, die mich ignorieren $query = "SELECT i_id,u_id,u_nick,u_level,u_punkte_gesamt,u_punkte_gruppe " . "FROM iignore LEFT JOIN user on i_user_aktiv=u_id " . "WHERE i_user_passiv={$u_id} ORDER BY u_nick,i_id"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { $i = 0; $text = str_replace("%u_name%", $u_name, $t['chat_msg82']); while ($row = mysql_fetch_object($result)) { if ($row->u_id && $row->u_id != "NULL") { if ($i > 0) { $text = $text . ", "; } $text = $text . user($row->u_id, $row, TRUE, FALSE, " ", "", "", FALSE); } else { $query = "DELETE FROM iignore WHERE i_id={$row->i_id}"; $result2 = mysql_query($query, $conn); } $i++; } system_msg("", 0, $u_id, $system_farbe, $text . ""); } @mysql_free_result($result); } break; case "/channel": case "/go": case "/raum": case "/rooms": case "/j": case "/join": if (($u_level == "G" || $u_level == "U") && $single_room_verhalten == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { if ($chatzeile[1]) { // Raumname erzeugen $chatzeile[1] = preg_replace("/[ \\'\"]/", "", $chatzeile[1]); $f['r_name'] = htmlspecialchars($chatzeile[1]); if (!isset($chatzeile[2])) { $chatzeile[2] = ""; } // Admin oder Raumbesitzer darf das Betreten geschlossener Räume erzwingen (Prüfung in raum_gehe) if ($beichtstuhl || $chatzeile[2] == "immer" || $chatzeile[2] == "force" || $chatzeile[2] == "!") { $raum_geschlossen = TRUE; } else { $raum_geschlossen = FALSE; } // Raum wechseln $query = "SELECT r_id,(LENGTH(r_name)-length('{$chatzeile['1']}')) as laenge " . "FROM raum WHERE r_name like '" . mysql_real_escape_string($chatzeile[1]) . "%' " . "ORDER BY laenge"; $result = mysql_query($query, $conn); if (mysql_num_rows($result) != 0) { $r_id_neu = mysql_result($result, 0, "r_id"); if ($r_id_neu != $r_id) { $r_id = raum_gehe($o_id, $u_id, $u_name, $r_id, $r_id_neu, $raum_geschlossen); raum_user($r_id, $u_id, ""); } } elseif ($u_level != "G" && strlen($f['r_name']) <= $raum_max && strlen($f['r_name']) > 3) { // Neuen Raum anlegen, ausser User ist Gast $f['r_topic'] = htmlspecialchars($u_name . $t['chat_msg56']); $f['r_eintritt'] = ""; $f['r_austritt'] = ""; $f['r_status1'] = "O"; $f['r_status2'] = "T"; $f['r_besitzer'] = $u_id; $raumanlegen = true; // ab hier neu: wir prüfen ob community an ist, der User kein Admin und $raumanlegenpunkte gesetzt if ($communityfeatures && !$admin && $raumanlegenpunkte) { $result = mysql_query("select u_punkte_gesamt FROM user WHERE u_id={$u_id}"); if ($result && mysql_num_rows($result) == 1) { $u_punkte_gesamt = mysql_result($result, 0, 0); } if ($u_punkte_gesamt < $raumanlegenpunkte) { // Fehlermeldung und Raum nicht anlegen system_msg("", 0, $u_id, $system_farbe, str_replace("%punkte%", $raumanlegenpunkte, $t['chat_msg108'])); $raumanlegen = false; } } if ($raumanlegen == true) { // Hier wird der Raum angelegt $r_id_neu = schreibe_db("raum", $f, $f['r_id'], "r_id"); if ($r_id_neu != $r_id) { $r_id = raum_gehe($o_id, $u_id, $u_name, $r_id, $r_id_neu, $raum_geschlossen); raum_user($r_id, $u_id, ""); } } } else { // Fehlermeldung system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg11'])); } mysql_free_result($result); } else { // Liste alle Räume auf if ($admin) { $query = "SELECT r_name from raum order by r_name"; } else { $query = "SELECT r_name from raum WHERE r_status1 = 'O' order by r_name"; } $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); $text = $t['chat_msg12'] . " "; $i = 0; while ($rows > $i) { $text = $text . mysql_result($result, $i, "r_name"); $i++; if ($i < $rows) { $text = $text . ", "; } } system_msg("", 0, $u_id, $system_farbe, $text); mysql_free_result($result); } } break; case "/wer": case "/who": case "/w": case "/user": case "/list": // User listen if ($chatzeile[1] == "*") { // * zeigt alle Räume $chatzeile[0] = "/people"; } elseif ($chatzeile[1] != "") { $query = "SELECT r_id from raum WHERE r_name LIKE '" . mysql_real_escape_string($chatzeile[1]) . "'%' "; if (!$admin) { $query .= " AND (r_status1='O' OR r_status1='m' OR r_id={$o_raum}) "; } $result = mysql_query($query, $conn); if ($result and mysql_num_rows($result) > 0) { $text = $t['chat_msg12'] . "<br>"; $row = mysql_fetch_object($result); raum_user($row->r_id, $u_id, ""); mysql_free_result($result); } else { // Raum nicht gefunden -> Fehlermeldung $txt = str_replace("%raumname%", $chatzeile[1], $t['chat_msg53']); system_msg("", $u_id, $u_id, $system_farbe, $txt); } break; } else { // Der aktuelle Raum wird gezeigt raum_user($r_id, $u_id, ""); break; } case "/people": // Liste alle Räume mit Usern auf $query = "SELECT r_id from raum "; if (!$admin) { $query .= " WHERE (r_status1='O' OR r_status1='m' OR r_id={$o_raum}) "; } $query .= " ORDER BY r_name"; $result = mysql_query($query, $conn); if ($result and mysql_num_rows($result) > 0) { $text = $t['chat_msg12'] . "<br>"; while ($row = mysql_fetch_object($result)) { raum_user($row->r_id, $u_id, ""); } mysql_free_result($result); } break; case "/txt": case "/me": // Spruch ausgeben if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { if (!($o_knebel > 0)) { if ($u_level == "M" || !$ist_moderiert) { hidden_msg($u_name, $u_id, $u_farbe, $r_id, $u_name . " " . html_parse($privat, htmlspecialchars($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3]), 1)); } else { system_msg("", $u_id, $u_id, $system_farbe, $t['moderiert1']); } } else { // user ist geknebelt... $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", $u_id, $u_id, $system_farbe, $txt); } } break; case "/away": case "/weg": // Away-Text setzen oder löschen // Smilies parsen $privat = FALSE; if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); // User ist Gast } elseif ($o_knebel > 0) { // User ist noch geknebelt $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", 0, $u_id, $system_farbe, $txt); } else { $away = substr(trim($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3]), 0, 80); $away = html_parse($privat, htmlspecialchars($away)); if ($away == "") { $text = "{$u_nick} {$t['away2']}"; $f['u_away'] = ""; schreibe_db("user", $f, $u_id, "u_id"); } else { $text = "{$u_nick} {$t['away1']} {$away}"; $f['u_away'] = $away; schreibe_db("user", $f, $u_id, "u_id"); } // Bei Moderation private Nachricht, sonst Nachricht an alle if (!$ist_moderiert || $u_level == "M") { global_msg($u_id, $r_id, $text); } else { system_msg("", $u_id, $u_id, $system_farbe, $text); } } break; case "/schubs": // Nur für Admins und Tempadmins, schubst User in einen andere Raum if ($admin || $u_level == "A") { $user = nick_ergaenze($chatzeile[1], "raum", 1); if ($user['u_nick'] == "") { $user = nick_ergaenze($chatzeile[1], "online", 1); } if ($user['u_nick'] != "") { $raum = $chatzeile[2]; if ($raum == "") { $query = "select r_id,r_name from raum where r_id={$o_raum}"; } else { $query = "select r_id,r_name from raum where r_name like '{$raum}%'"; } $result = mysql_query($query, $conn); if ($result > 0) { $raumid = mysql_result($result, 0, "r_id"); $raum = mysql_result($result, 0, "r_name"); mysql_free_result($result); } $query = "select o_raum,o_id,r_name from online,raum where o_user={$user['u_id']} AND r_id=o_raum"; $result = mysql_query($query, $conn); if ($result > 0) { $raumalt = mysql_result($result, 0, "r_name"); $uo_id = mysql_result($result, 0, "o_id"); $uo_raum = mysql_result($result, 0, "o_raum"); mysql_free_result($result); } // $text="Schubbern...$user[u_nick]/$user[u_id] $raumalt/$uo_raum -> $raum/$raumid"; $text = "<b>{$chat}:</b> {$user['u_nick']}: {$raumalt} -> {$raum}"; system_msg("", 0, $u_id, $system_farbe, $text); global_msg($u_id, $o_raum, "'{$u_name}' {$t['sperre2']} '{$user['u_nick']}' {$t['sperre8']} {$raum}"); raum_gehe($uo_id, $user['u_id'], $user['u_nick'], $uo_raum, $raumid, TRUE); } } break; case "/plop": case "/kick": // Besitzer des aktuellen Raums ermitteln $query = "SELECT r_besitzer from raum WHERE r_id={$r_id} "; $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); if ($rows == 1) { $r_besitzer = mysql_result($result, 0, "r_besitzer"); } mysql_free_result($result); // Nur für Admins und Tempadmins, wirft User aus dem aktuellen Raum oder hebt Sperre auf if (strlen($chatzeile[1]) > 0) { // User kicken.... // User aus Raum werfen oder Sperre freigeben, falls $u_id ist Admin oder Besitzer if ($r_besitzer == $u_id || $admin || $u_level == "A") { // Ist User im aktuellen Raum eingeloggt? $query = "SELECT o_user,o_name,o_level,(LENGTH(o_name)-length('" . mysql_real_escape_string($chatzeile[1]) . "')) as laenge " . "FROM online " . "WHERE o_name LIKE '%" . mysql_real_escape_string($chatzeile[1]) . "%' " . "ORDER BY laenge"; $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); // User bestimmen if ($rows != 0) { $s_user = mysql_result($result, 0, "o_user"); $s_user_name = mysql_result($result, 0, "o_name"); $s_user_level = mysql_result($result, 0, "o_level"); // Auf admin prüfen if ($s_user_level == "S" || $s_user_level == "C" || $s_user_level == "M" || $s_user_level == "A") { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $u_name, str_replace("%s_user_name%", $s_user_name, $t['chat_msg13']))); } else { // Sperren oder freigeben sperre($r_id, $u_id, $u_name, $s_user, $s_user_name, $admin); } } else { // user nicht gefunden oder nicht online? dann testen, ob gesperrt, damit man das // gesperrt auch wieder raus bekommt. $query = "SELECT u_nick,u_id from user left join sperre " . " on u_id = s_user " . "WHERE u_nick='" . mysql_real_escape_string($chatzeile[1]) . "' and s_raum = {$r_id} "; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $row = mysql_fetch_object($result); sperre($r_id, $u_id, $u_name, $row->u_id, $row->u_nick, $admin); } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg14'])); } @mysql_free_result($result); } @mysql_free_result($result); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg15']); } } elseif ($r_besitzer == $u_id || $admin || $u_level == "A") { // Liste der für diesen Raum gesperrten User ausgeben $query = "SELECT u_nick FROM sperre,user " . "WHERE s_user=u_id AND s_raum={$r_id} " . "ORDER BY u_nick"; $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); if ($rows > 0) { $text = $t['chat_msg16'] . " "; $i = 0; while ($rows > $i) { $text = $text . mysql_result($result, $i, "u_nick"); $i++; if ($rows > $i) { $text = $text . ", "; } } } else { $text = $t['chat_msg17']; } system_msg("", 0, $u_id, $system_farbe, $text); mysql_free_result($result); } else { // Keine Berechtigung zur Ausgabe der gesperrten user system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } break; case "/name": case "/nick": // Prüft und ändert Nicknamen if (!$einstellungen_aendern) { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } elseif (strlen($chatzeile[1]) > 0 && coreCheckName($chatzeile[1], $check_name) != $u_name) { $query = "SELECT u_nick_historie FROM user WHERE u_id = '{$u_id}'"; $result = mysql_query($query); $xyz = mysql_fetch_array($result); $nick_historie = unserialize($xyz['u_nick_historie']); if (is_array($nick_historie)) { reset($nick_historie); list($key, $value) = each($nick_historie); $differenz = time() - $key; } if (!isset($differenz)) { $differenz = 999; } if ($admin) { $differenz = 999; } // Sonderzeichen filtern $chatzeile[1] = coreCheckName($chatzeile[1], $check_name); // Länge prüfen if (strlen($chatzeile[1]) < 4 || strlen($chatzeile[1]) > 20 || $differenz < $nickwechsel) { if ($differenz < $nickwechsel) { system_msg("", $u_id, $u_id, $system_farbe, str_replace("%nickwechsel%", $nickwechsel, $t['chat_msg107'])); } else { system_msg("", $u_id, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg18'])); } } else { $f['u_nick'] = $chatzeile[1]; $query = "SELECT u_id, u_level FROM user " . "WHERE u_nick LIKE '" . mysql_real_escape_string($f[u_nick]) . "' " . "AND u_id != {$u_id}"; $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); if ($rows != 0) { if ($rows == 1) { $xyz = mysql_fetch_array($result); if ($xyz[u_level] == 'Z') { system_msg("", $u_id, $u_id, $system_farbe, str_replace("%u_nick%", $f['u_nick'], $t['chat_msg115'])); } else { system_msg("", $u_id, $u_id, $system_farbe, str_replace("%u_nick%", $f['u_nick'], $t['chat_msg19'])); } } else { system_msg("", $u_id, $u_id, $system_farbe, str_replace("%u_nick%", $f['u_nick'], $t['chat_msg19'])); } } else { // Nick in Datenbank ändern schreibe_db("user", $f, $u_id, "u_id"); // Bei Moderation private Nachricht, sonst Nachricht an alle if (!$ist_moderiert || $u_level == "M") { global_msg($u_id, $r_id, str_replace("%u_nick%", $f['u_nick'], str_replace("%u_name%", $u_name, $t['chat_msg20']))); } else { system_msg("", $u_id, $u_id, $system_farbe, str_replace("%u_nick%", $f['u_nick'], str_replace("%u_name%", $u_name, $t['chat_msg20']))); } // Neuen Namen setzen und alte Nicknamen in DB speichern $query = "SELECT u_nick_historie FROM user WHERE u_id = '{$u_id}'"; $result = mysql_query($query); $xyz = mysql_fetch_array($result); $nick_historie = unserialize($xyz['u_nick_historie']); $datum = time(); $nick_historie_neu[$datum] = $u_name; if (is_array($nick_historie)) { $i = 0; while ($i < 3 && (list($datum, $nick) = each($nick_historie))) { $nick_historie_neu[$datum] = $nick; $i++; } } $f['u_nick_historie'] = serialize($nick_historie_neu); $u_id = schreibe_db("user", $f, $u_id, "u_id"); $u_name = $f['u_nick']; } mysql_free_result($result); } } break; case "/color": case "/farbe": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } elseif (strlen($chatzeile[1]) == 6) { if (preg_match("/[a-f0-9]{6}/i", $chatzeile[1])) { if (isset($f)) { unset($f); } $f['u_farbe'] = substr(htmlspecialchars($chatzeile[1]), 0, 6); schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $f['u_farbe'], $t['chat_msg21'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } else { if (strlen($chatzeile[1]) == 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $u_farbe, $t['chat_msg22'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } break; case "/farbset": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { switch ($chatzeile[1]) { case "1": $f['u_farbe'] = "0000c0"; $f['u_farbe_alle'] = "202020"; $f['u_farbe_priv'] = "c02020"; $f['u_farbe_sys'] = "55555"; $f['u_farbe_bg'] = "f0f0f0"; $f['u_farbe_noise'] = "008000"; schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%nummer%", $chatzeile[1], $t['chat_msg28'])); break; case "2": $f['u_farbe'] = "5050c0"; $f['u_farbe_alle'] = "2222cc"; $f['u_farbe_priv'] = "f06000"; $f['u_farbe_sys'] = "0070e0"; $f['u_farbe_bg'] = "d0f0ff"; $f['u_farbe_noise'] = "2090b0"; schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%nummer%", $chatzeile[1], $t['chat_msg28'])); break; case "3": $f['u_farbe'] = "424242"; $f['u_farbe_alle'] = "0000c0"; $f['u_farbe_priv'] = "ff4040"; $f['u_farbe_sys'] = "707070"; $f['u_farbe_bg'] = "ffffff"; $f['u_farbe_noise'] = "008000"; schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%nummer%", $chatzeile[1], $t['chat_msg28'])); break; case "4": $f['u_farbe'] = "000000"; $f['u_farbe_alle'] = "0000ff"; $f['u_farbe_priv'] = "ff0000"; $f['u_farbe_sys'] = "000000"; $f['u_farbe_bg'] = "ffffff"; $f['u_farbe_noise'] = "0000ff"; schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%nummer%", $chatzeile[1], $t['chat_msg28'])); break; default: system_msg("", 0, $u_id, $system_farbe, $t['chat_msg29']); break; } } break; case "/farbreset": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { $f['u_farbe_alle'] = "-"; $f['u_farbe_priv'] = "-"; $f['u_farbe_sys'] = "-"; $f['u_farbe_bg'] = "-"; $f['u_farbe_noise'] = "-"; $f['u_farbe'] = $user_farbe; schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, $t['chat_msg27']); } break; case "/color2": case "/farbe2": case "/farbealle": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Zeigt oder ändert Farbe 2 (Farbe für alle anderen User) if ($chatzeile[1] == "off") { $chatzeile[1] = "-"; } if ($chatzeile[1] == "aus") { $chatzeile[1] = "-"; } if (strlen($chatzeile[1]) == 6 || $chatzeile[1] == "-") { $f['u_farbe_alle'] = substr(htmlspecialchars($chatzeile[1]), 0, 6); schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $f['u_farbe_alle'], $t['chat_msg21'])); } elseif (strlen($chatzeile[1]) == 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $u_farbe_alle, $t['chat_msg22'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } break; case "/farbe3": case "/color3": case "/farbenoise": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Zeigt oder ändert Farbe 3 (Farbe für noises) if ($chatzeile[1] == "off") { $chatzeile[1] = "-"; } if ($chatzeile[1] == "aus") { $chatzeile[1] = "-"; } if (strlen($chatzeile[1]) == 6 || $chatzeile[1] == "-") { $f['u_farbe_noise'] = substr(htmlspecialchars($chatzeile[1]), 0, 6); schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $f['u_farbe_noise'], $t['chat_msg21'])); } elseif (strlen($chatzeile[1]) == 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $u_farbe_noise, $t['chat_msg22'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } break; case "/color4": case "/farbe4": case "/farbepriv": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Zeigt oder ändert Farbe 4 (Farbe für privat) if ($chatzeile[1] == "off") { $chatzeile[1] = "-"; } if ($chatzeile[1] == "aus") { $chatzeile[1] = "-"; } if (strlen($chatzeile[1]) == 6 || $chatzeile[1] == "-") { $f['u_farbe_priv'] = substr(htmlspecialchars($chatzeile[1]), 0, 6); schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $f['u_farbe_priv'], $t['chat_msg21'])); } elseif (strlen($chatzeile[1]) == 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $u_farbe_priv, $t['chat_msg22'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } break; case "/color5": case "/farbe5": case "/farbebg": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Zeigt oder ändert Farbe 5 (Farbe für Background) if ($chatzeile[1] == "off") { $chatzeile[1] = "-"; } if ($chatzeile[1] == "aus") { $chatzeile[1] = "-"; } if (strlen($chatzeile[1]) == 6 || $chatzeile[1] == "-") { $f['u_farbe_bg'] = substr(htmlspecialchars($chatzeile[1]), 0, 6); schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $f['u_farbe_bg'], $t['chat_msg21'])); } elseif (strlen($chatzeile[1]) == 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $u_farbe_bg, $t['chat_msg22'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } break; case "/color6": case "/farbe6": case "/farbesys": if (($u_level == "G" || $u_level == "U") && $eingabe_light_farbe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Zeigt oder ändert Farbe 6 (Farbe für Systemmeldungen) if ($chatzeile[1] == "off") { $chatzeile[1] = "-"; } if ($chatzeile[1] == "aus") { $chatzeile[1] = "-"; } if (strlen($chatzeile[1]) == 6 || $chatzeile[1] == "-") { $f['u_farbe_sys'] = substr(htmlspecialchars($chatzeile[1]), 0, 6); schreibe_db("user", $f, $u_id, "u_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $f['u_farbe_sys'], $t['chat_msg21'])); } elseif (strlen($chatzeile[1]) == 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_farbe%", $u_farbe_sys, $t['chat_msg22'])); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg23']); } } break; case "/help": case "/hilfe": case "/?": if (($u_level == "G" || $u_level == "U") && $eingabe_light_hilfe == "1") { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Hilfe listen reset($hilfstext); $anzahl = count($hilfstext); $i = 0; while ($i < $anzahl) { $hhkey = key($hilfstext); system_msg("", 0, $u_id, "", "<SMALL>" . $hilfstext[$hhkey] . "</SMALL>"); next($hilfstext); $i++; } } break; case "/clearedit": // löschen der Eingabezeile erzwingen oder alten Text stehen lassen // alter Text wird dann zum überschreiben markiert. if ($u_clearedit == 0) { $f['u_clearedit'] = "1"; system_msg("", 0, $u_id, $system_farbe, $t['chat_msg30']); } else { $f['u_clearedit'] = "0"; system_msg("", 0, $u_id, $system_farbe, $t['chat_msg31']); } schreibe_db("user", $f, $u_id, "u_id"); break; case "/dice": case "/wuerfel": // Würfeln if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { if ($o_knebel > 0) { // user ist geknebelt... $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", 0, $u_id, $system_farbe, $txt); break; } if (preg_match("!^\\d+[wW]\\d+\$!", $chatzeile[1])) { $w = preg_split("![wW]!", $chatzeile[1]); if ($w[0] > 30) { $w[0] = 30; } if ($w[1] == 0) { $w[1] = 6; } $t['chat_msg34'] = str_replace("%user%", $u_name, $t['chat_msg34']); if ($w[0] == 1) { $tmp = "einem "; } else { $tmp = htmlspecialchars("{$w['0']} "); } if (preg_match("!w!", $chatzeile[1])) { $tmp = $tmp . "kleinen "; } else { $tmp = $tmp . "großen "; } if ($w[0] == 1) { $tmp = $tmp . htmlspecialchars(" {$w['1']}-seitigen Würfel"); } else { $tmp = $tmp . htmlspecialchars(" {$w['1']}-seitigen Würfeln"); } $t['chat_msg34'] = str_replace("%wuerfel%", $tmp, $t['chat_msg34']); $summe = 0; for ($i = 0; $i < $w[0]; $i++) { $wurf = mt_rand(1, $w[1]); $summe = $summe + $wurf; $t['chat_msg34'] = $t['chat_msg34'] . " {$wurf}"; } if ($w[0] > 1) { $t['chat_msg34'] = $t['chat_msg34'] . ". Summe={$summe}."; } // Bei Moderation private Nachricht, sonst Nachricht an alle if (!$ist_moderiert || $u_level == "M") { hidden_msg($u_name, $u_id, $u_farbe, $r_id, $t['chat_msg34']); } else { system_msg("", $u_id, $u_id, $system_farbe, $t['moderiert1']); } } else { system_msg("", $u_id, $u_id, $system_farbe, $t['chat_msg35']); } } break; case "/zeige": case "/whois": if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { if (strlen($chatzeile[1]) >= 3) { $chatzeile[1] = str_replace("\$", "", $chatzeile[1]); $chatzeile[1] = str_replace("^", "", $chatzeile[1]); if (preg_match("/%/", $chatzeile[1])) { $sucheper = "LIKE"; } else { $sucheper = "="; } if (strcasecmp($chatzeile[1], "gast") == 0 && $admin) { // suche "/whois gast" zeigt alle Gäste und den User gastwenn vorhanden $query = "SELECT *,date_format(u_login,'%d.%m.%y %H:%i') as login " . "FROM user WHERE (u_nick LIKE '" . mysql_real_escape_string($chatzeile[1]) . "') or (u_level = 'G') " . "ORDER BY u_nick,u_name limit {$max_user_liste}"; } else { if ($admin || $u_level == "A") { // suche für Admins und Tempadmins zeigt alle User $query = "SELECT *,date_format(u_login,'%d.%m.%y %H:%i') as login " . "FROM user WHERE u_nick {$sucheper} '" . mysql_real_escape_string($chatzeile[1]) . "' " . "ORDER BY u_nick,u_name limit {$max_user_liste}"; } else { // suche für User zeigt die gesperrten nicht an $query = "SELECT *,date_format(u_login,'%d.%m.%y %H:%i') as login " . "FROM user WHERE u_nick {$sucheper} '" . mysql_real_escape_string($chatzeile[1]) . "' " . "and u_level in ('A','C','G','M','S','U') " . "ORDER BY u_nick,u_name limit {$max_user_liste}"; } } $result = @mysql_query($query, $conn); $rows = mysql_num_rows($result); $text = "<B>WHOIS {$chatzeile['1']}:</B><BR>\n"; while ($row = @mysql_fetch_object($result)) { $q2 = "SELECT r_name,o_ip,o_vhost,o_browser,o_id,o_who," . "UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_login) AS online_zeit " . "FROM online left join raum on r_id=o_raum WHERE o_user={$row->u_id} "; $r2 = mysql_query($q2, $conn); if ($r2 && mysql_num_rows($r2) > 0) { // User ist online $r = mysql_fetch_object($r2); if ($admin) { $text = $text . user($row->u_id, $row, TRUE, TRUE, " ", $r->online_zeit, $row->login, FALSE) . " (" . htmlspecialchars($row->u_name) . "), "; } else { $text = $text . user($row->u_id, $row, TRUE, TRUE, " ", $r->online_zeit, $row->login, FALSE) . ", "; } if ($row->u_email) { $text .= "%email% " . htmlspecialchars($row->u_email) . ", "; } if ($row->u_adminemail && $admin) { $text .= "%adminemail% " . htmlspecialchars($row->u_adminemail) . ", "; } $text .= "<B>[" . $whotext[$r->o_who] . "]</B>"; if ($r->o_who == 0) { $text .= ", %raum% " . $r->r_name; } if ($row->u_away) { $awaytext = htmlspecialchars($row->u_away); $awaytext = str_replace('<b>', '<B>', $awaytext); $awaytext = str_replace('</b>', '</B>', $awaytext); $awaytext = str_replace('<i>', '<I>', $awaytext); $awaytext = str_replace('</i>', '</I>', $awaytext); $awaytext = str_replace('&lt;', '<', $awaytext); $awaytext = str_replace('&gt;', '>', $awaytext); $awaytext = str_replace('&quot;', '"', $awaytext); $text = $text . ", (" . $awaytext . ")"; } if ($admin) { $host_name = @gethostbyaddr($r->o_ip); $text = $text . htmlspecialchars(", ({$r->o_ip}({$host_name}), {$r->o_vhost}, {$r->o_browser}) "); } $text = $text . "</B><br>\n"; @mysql_free_result($r2); } else { // User ist nicht online if ($admin) { $text = $text . user($row->u_id, $row, TRUE, TRUE, " ", "", $row->login, FALSE) . " (" . htmlspecialchars($row->u_name) . "), "; } else { $text = $text . user($row->u_id, $row, TRUE, TRUE, " ", "", $row->login, FALSE) . ", "; } if ($row->u_email) { $text = $text . "%email% " . htmlspecialchars($row->u_email) . ", "; } if ($row->u_adminemail && $admin) { $text = $text . "%adminemail% " . htmlspecialchars($row->u_adminemail) . ", "; } if ($row->u_away) { $awaytext = htmlspecialchars($row->u_away); $awaytext = str_replace('<b>', '<B>', $awaytext); $awaytext = str_replace('</b>', '</B>', $awaytext); $awaytext = str_replace('<i>', '<I>', $awaytext); $awaytext = str_replace('</i>', '</I>', $awaytext); $awaytext = str_replace('&lt;', '<', $awaytext); $awaytext = str_replace('&gt;', '>', $awaytext); $text = $text . ", (" . $awaytext . ")"; } $text = $text . "<br>\n"; } } $text = $text . "\n"; $text = str_replace("%email%", $t['chat_msg64'], $text); $text = str_replace("%adminemail%", $t['chat_msg65'], $text); $text = str_replace("%online%", $t['chat_msg66'], $text); $text = str_replace("%raum%", $t['chat_msg67'], $text); $text = str_replace("%login%", $t['chat_msg68'], $text); system_msg("", 0, $u_id, $system_farbe, $text); @mysql_free_result($result); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg33']); } } break; case "/msg": // Sollte hier in den Aliasen etwas dazu kommen, muss der Autoknebel angepasst werden, damit Admins die privaten // Sollte hier in den Aliasen etwas dazu kommen, muss der Autoknebel angepasst werden, damit Admins die privaten case "/talk": // Nachrichten nicht lesen können, wenn der Autoknebel zuschlägt // Nachrichten nicht lesen können, wenn der Autoknebel zuschlägt case "/tell": case "/t": case "/msgpriv": // Extra behandlung für Private Nachrichten im Userfenster, für den Fall, dass der User sich ausloggt, keine Nickergänzung // Private Nachricht if (!($o_knebel > 0) && $u_level != "G" && !$ist_eingang && (!$beichtstuhl || $admin)) { // Smilies und Text parsen $privat = TRUE; $text = html_parse($privat, htmlspecialchars($chatzeile[2] . " " . $chatzeile[3])); // Empfänger im Chat suchen // /talk muss z.B. mit "/talk kleiner" auch dann an kleiner gehen // wenn kleiner in anderem Raum ist und im eigenen Raum ein kleinerpfuscher anwesend ist. if (!isset($nick) || $nick['u_nick'] == "") { if ($chatzeile[0] == "/msgpriv") { // Keine Nickergänzung bei diesem Nachrichtentyp // Prüfen ob User noch Online $query = "SELECT o_id, o_name, o_user, o_userdata, o_userdata2, o_userdata3, o_userdata4 FROM online WHERE o_name = '" . mysql_real_escape_string($chatzeile[1]) . "' "; $result = mysql_query($query, $conn); if ($result >= 0) { if (mysql_num_rows($result) == 1) { $nick = unserialize(mysql_result($result, 0, "o_userdata") . mysql_result($result, 0, "o_userdata2") . mysql_result($result, 0, "o_userdata3") . mysql_result($result, 0, "o_userdata4")); $nick['u_nick'] = mysql_result($result, 0, "o_name"); $nick['u_id'] = mysql_result($result, 0, "o_user"); } else { $nick['u_nick'] = ""; system_msg("", 0, $u_id, $u_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg25'])); } } mysql_free_result($result); } else { $nick = nick_ergaenze($chatzeile[1], "online", 0); } } // Falls Empfänger gefunden, Nachricht versenden if (isset($nick) && $nick['u_nick'] != "") { // nick gefunden und Eindeutig. if ($text != " ") { // Wir prüfen, ob der User ignoriert wird, wenn ja => Fehlermeldung $query = "SELECT i_user_aktiv, i_user_passiv FROM iignore " . "WHERE (i_user_aktiv='{$u_id}' AND i_user_passiv = '{$nick['u_id']}') OR " . " (i_user_passiv='{$u_id}' AND i_user_aktiv = '{$nick['u_id']}') "; $result = mysql_query($query); $num = mysql_num_rows($result); mysql_free_result($result); #system_msg("",$u_id,$u_id,$system_farbe,"num: $num"); if ($num == 0) { priv_msg($u_name, $u_id, $nick['u_id'], $u_farbe, $text, $userdata); system_msg("", $u_id, $u_id, $system_farbe, "<B>{$u_name} {$t['chat_msg24']} {$nick['u_nick']}:</B> {$text}"); } else { system_msg("", $u_id, $u_id, $system_farbe, str_replace('%nick%', $nick['u_nick'], $t['chat_msg109'])); } if ($nick['u_away'] != "") { system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}:</b> {$nick['u_nick']} {$t['away1']} {$nick['u_away']}"); } } } else { // Nachricht konnte nicht verschickt werden, als Kopie ausgeben system_msg("", 0, $u_id, $system_farbe, str_replace("%nachricht%", $text, $t['chat_msg77'])); } } elseif ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } elseif ($o_knebel > 0) { // user ist geknebelt... $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", $u_id, $u_id, $system_farbe, $txt); } elseif ($ist_eingang) { system_msg("", 0, $u_id, $system_farbe, $raum_einstellungen['r_topic']); } elseif (!$admin) { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } break; case "/tf": case "/msgf": $query = "SELECT f_id,f_text,f_userid,f_freundid,f_zeit FROM freunde WHERE f_userid={$u_id} AND f_status = 'bestaetigt' " . "UNION " . "SELECT f_id,f_text,f_userid,f_freundid,f_zeit FROM freunde WHERE f_freundid={$u_id} AND f_status = 'bestaetigt' " . "ORDER BY f_zeit desc "; $result = mysql_query($query); $fid = ""; $nicks = ""; while ($a = mysql_fetch_array($result)) { $query2 = "SELECT o_user,o_name FROM online WHERE (o_user = '******'f_userid']}' or o_user = '******'f_freundid']}') and o_user != '{$u_id}'"; $result2 = mysql_query($query2); if (mysql_numrows($result2) == 1) { if ($a[f_userid] != $u_id) { $fid[] = $a[f_userid]; } if ($a[f_freundid] != $u_id) { $fid[] = $a[f_freundid]; } } } $privat = TRUE; $text = html_parse($privat, htmlspecialchars($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3])); for ($i = 0; $i < count($fid); $i++) { $nick = user($fid[$i], 0, FALSE, FALSE, ""); priv_msg($u_name, $u_id, $fid[$i], $u_farbe, $text, $userdata); system_msg("", $u_id, $u_id, $system_farbe, "<B>{$u_name} {$t['chat_msg24']} {$nick}:</B> {$text}"); } break; case "/analle": case "/toall": // Private nachricht an alle User if ($admin || $u_level == "A") { // Smilies und Text parsen $privat = TRUE; $text = html_parse($privat, $t['chat_msg100'] . htmlspecialchars($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3])); if ($text) { // Schleife über alle User, die online sind $query = "SELECT o_user FROM online"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { while ($row = mysql_fetch_array($result)) { if ($row['o_user'] != $u_id) { priv_msg($u_name, $u_id, $row['o_user'], $u_farbe, $text, $userdata); } } system_msg("", $u_id, $u_id, $system_farbe, "<B>{$u_name} {$t['chat_msg78']}:</B> {$text}"); } else { // Kein User online system_msg("", $u_id, $u_id, $system_farbe, $t['chat_msg79']); } @mysql_free_result($result); } } else { // user ist kein Admin system_msg("", $u_id, $u_id, $system_farbe, $t['chat_msg1']); } break; case "/loescheraum": // Raum löschen if ($chatzeile[1]) { // Rechte prüfen $query = "SELECT r_id,r_name,r_besitzer FROM raum " . "WHERE r_name like '" . mysql_real_escape_string($chatzeile[1]) . "' "; $result = mysql_query($query, $conn); if (mysql_num_rows($result) != 0) { $row = mysql_fetch_object($result); if ($admin || $row->r_besitzer == $u_id) { // Lobby suchen $query = "SELECT r_id FROM raum WHERE r_name='{$lobby}' "; $result2 = mysql_query($query, $conn); if ($result2 and mysql_num_rows($result2) > 0) { $lobby_id = mysql_result($result2, 0, "r_id"); } @mysql_free_result($result2); if (!$lobby_id) { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg63']); exit; } // Löschen falls nicht Lobby if ($row->r_id == $lobby_id) { system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg63'])); } else { // Raum darf gelöscht werden, Raum schließen $f['r_status1'] = "G"; schreibe_db("raum", $f, $row->r_id, "r_id"); // Raum leeren $query = "SELECT o_user,o_name FROM online " . "WHERE o_raum={$row->r_id} "; $result2 = mysql_query($query, $conn); while ($row2 = mysql_fetch_object($result2)) { system_msg("", 0, $row2->o_user, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg62'])); $oo_raum = raum_gehe($o_id, $row2->o_user, $row2->o_name, $row->r_id, $lobby_id, FALSE); raum_user($lobby_id, $row2->o_user, $id); $i++; } @mysql_free_result($result2); $query = "DELETE FROM raum WHERE r_id={$row->r_id} "; $result2 = mysql_query($query, $conn); @mysql_free_result($result2); // Gesperrte Räume löschen $query = "DELETE FROM sperre WHERE s_raum={$row->r_id}"; $result2 = mysql_query($query, $conn); @mysql_free_result($result2); // Meldung an User system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg58'])); } } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg57'])); } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg3']); } @mysql_free_result($result); } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg59']); } break; case "/uebergeberaum": case "/schenke": // aktuellen Raum Übergeben // Rechte prüfen $query = "SELECT r_id,r_name,r_besitzer FROM raum " . "WHERE r_id={$o_raum} "; $result = mysql_query($query, $conn); if (mysql_num_rows($result) != 0) { $row = mysql_fetch_object($result); if ($admin || $row->r_besitzer == $u_id) { // Empfänger im aktuellen Raum suchen $nick = nick_ergaenze($chatzeile[1], "raum", 1); // Empfänger im Chat suchen if ($nick['u_nick'] == "") { $nick = nick_ergaenze($chatzeile[1], "online", 0); } // Falls Empfänger gefunden und Empfänger ist nicht sich selbst, Nachricht versenden if ($nick['u_nick'] != "" && $nick['u_id'] && $nick['u_nick'] != $u_name && $nick['u_level'] != "G" && $r_id) { // Raum übergeben $text = $t['chat_msg60']; $text = str_replace("%user%", $nick['u_nick'], $text); $text = str_replace("%r_name%", $row->r_name, $text); $text = str_replace("%absender%", $u_nick, $text); system_msg("", $u_id, $u_id, $system_farbe, $text); system_msg("", $u_id, $nick['u_id'], $system_farbe, $text); $f['r_besitzer'] = $nick['u_id']; schreibe_db("raum", $f, $r_id, "r_id"); } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg69'])); } } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg61'])); } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg3']); } @mysql_free_result($result); break; case "/aendereraum": // aktuellen Raum auf den Status G/O/m ändern // Rechte prüfen $query = "SELECT r_id,r_name,r_besitzer,r_status1 FROM raum " . "WHERE r_id={$o_raum} "; $result = mysql_query($query, $conn); if (mysql_num_rows($result) != 0) { $row = mysql_fetch_object($result); if ($admin || $row->r_besitzer == $u_id) { switch (strtolower($chatzeile[1])) { case "m": case "moderiert": if ($moderationsmodul == 0) { system_msg("", $u_id, $u_id, $system_farbe, $t['chat_msg74']); } else { $f['r_status1'] = "m"; } break; case "o": case "offen": $f['r_status1'] = "O"; break; case "g": case "geschlossen": $f['r_status1'] = "G"; break; default: unset($f['r_status1']); $text = $t['chat_msg71'] . $raumstatus1[O] . ", " . $raumstatus1['G'] . ", " . $raumstatus1['m'] . "."; system_msg("", $u_id, $u_id, $system_farbe, $text); } if ($f['r_status1'] == $row->r_status1) { // Raum nicht verändert system_msg("", $u_id, $u_id, $system_farbe, str_replace("%status%", $raumstatus1[$f['r_status1']], str_replace("%r_name%", $row->r_name, $t['chat_msg75']))); } elseif ($f['r_status1'] && $r_id) { // Raum ändern system_msg("", $u_id, $u_id, $system_farbe, str_replace("%status%", $raumstatus1[$f['r_status1']], str_replace("%r_name%", $row->r_name, $t['chat_msg73']))); schreibe_db("raum", $f, $r_id, "r_id"); } else { // Fehler if (strlen($chatzeile[1]) > 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg70'])); } } } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name%", $row->r_name, $t['chat_msg72'])); } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg3']); } @mysql_free_result($result); break; case "/lob": // Nur für Admins, lobt User mit Punkten if ($admin) { if ($communityfeatures) { $user = nick_ergaenze($chatzeile[1], "raum", 1); if ($user['u_nick'] == "") { $user = nick_ergaenze($chatzeile[1], "online", 0); $im_raum = FALSE; } else { $im_raum = TRUE; } // Nur Superuser dürfen Gästen Punkte geben if ($user['u_level'] == 'G' && $u_level != 'S') { system_msg("", 0, $u_id, $system_farbe, $t['punkte22']); $user['u_nick'] = ""; } $anzahl = (int) $chatzeile[2]; if ((string) $anzahl != (string) $chatzeile[2]) { $anzahl = 0; } // Mehr als ein Punkt? Ansonsten Fehlermeldung if ($anzahl < 1) { system_msg("", 0, $u_id, $system_farbe, $t['punkte7']); $user['u_nick'] = ""; } // Kein SU und mehr als 1000 Punkte? Ansonsten Fehlermeldung if ($anzahl > 1000 && $u_level != 'S') { system_msg("", 0, $u_id, $system_farbe, $t['punkte11']); $user['u_nick'] = ""; } // selber Punkte geben ist verboten if ($u_nick == $user['u_nick']) { system_msg("", 0, $u_id, $system_farbe, $t['punkte10']); $user['u_nick'] = ""; } if ($user['u_nick'] != "") { if ($im_raum) { // eine öffentliche Nachricht an alle schreiben punkte($anzahl, $user['o_id'], $user['u_id'], "", TRUE); $txt = str_replace("%user1%", $u_nick, $t['punkte5']); $txt = str_replace("%user2%", $user['u_nick'], $txt); $txt = str_replace("%punkte%", $anzahl, $txt); global_msg($u_id, $o_raum, str_replace("%user%", $u_nick, $txt)); } else { // Zwei private Nachrichten (admin/user) punkte($anzahl, $user['o_id'], $user['u_id'], str_replace("%user%", $u_nick, $t['punkte3']), TRUE); $txt = str_replace("%user2%", $user['u_nick'], $t['punkte8']); $txt = str_replace("%user1%", $u_nick, $txt); $txt = str_replace("%punkte%", $anzahl, $txt); global_msg($u_id, $o_raum, str_replace("%user%", $u_nick, $txt)); } } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg74']); } } else { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } break; case "/tadel": case "/bestraf": case "/peitsch": // Nur für Admins, zieht User Punkte ab if ($admin) { if ($communityfeatures) { $user = nick_ergaenze($chatzeile[1], "raum", 1); if ($user['u_nick'] == "") { $user = nick_ergaenze($chatzeile[1], "online", 0); $im_raum = FALSE; } else { $im_raum = TRUE; } $anzahl = (int) $chatzeile[2]; if ((string) $anzahl != (string) $chatzeile[2]) { $anzahl = 0; } // Mehr als ein Punkt? Ansonsten Fehlermeldung if ($anzahl < 1) { system_msg("", 0, $u_id, $system_farbe, $t['punkte7']); $user['u_nick'] = ""; } // Lustiger Text, wenn der Admin sich selbst etwas abzieht if ($lustigefeatures && $u_nick == $user['u_nick']) { if ($anzahl == 1) { $txt = $t['punkte12']; } elseif ($anzahl == 42) { $txt = $t['punkte13']; } elseif ($anzahl < 100) { $txt = $t['punkte14']; } elseif ($anzahl < 200) { $txt = $t['punkte15']; } elseif ($anzahl < 500) { $txt = $t['punkte16']; } elseif ($anzahl < 1000) { $txt = $t['punkte17']; } elseif ($anzahl < 5000) { $txt = $t['punkte18']; } elseif ($anzahl < 10000) { $txt = $t['punkte19']; } else { $txt = $t['punkte20']; } // eine öffentliche Nachricht an alle schreiben punkte($anzahl * -1, $user['o_id'], $user['u_id'], "", TRUE); $txt = str_replace("%user%", $u_nick, $txt); $txt = str_replace("%punkte%", $anzahl, $txt); global_msg($u_id, $o_raum, str_replace("%user%", $u_nick, $txt)); } elseif ($user['u_nick'] != "") { if ($im_raum) { // eine öffentliche Nachricht an alle schreiben punkte($anzahl * -1, $user['o_id'], $user['u_id'], "", TRUE); $txt = str_replace("%user1%", $u_nick, $t['punkte6']); $txt = str_replace("%user2%", $user['u_nick'], $txt); $txt = str_replace("%punkte%", $anzahl, $txt); global_msg($u_id, $o_raum, str_replace("%user%", $u_nick, $txt)); } else { // Zwei private Nachrichten (admin/user) punkte($anzahl * -1, $user['o_id'], $user['u_id'], str_replace("%user%", $u_nick, $t['punkte4']), TRUE); $txt = str_replace("%user2%", $user['u_nick'], $t['punkte9']); $txt = str_replace("%user1%", $u_nick, $txt); $txt = str_replace("%punkte%", $anzahl, $txt); global_msg($u_id, $o_raum, str_replace("%user%", $u_nick, $txt)); } } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg74']); } } else { system_msg("", 0, $u_id, $system_farbe, "<B>He {$u_name}!</B> " . str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } break; case "/mail": case "/m": // Mail schreiben $text = chat_parse(htmlspecialchars($chatzeile[2] . " " . $chatzeile[3])); if ($communityfeatures && !($o_knebel > 0) && $u_level != "G" && strlen($text) > 1) { // Empfänger im Chat suchen $nick = nick_ergaenze($chatzeile[1], "online", 1); // Falls keinen Empfänger gefunden, in Usertabelle nachsehen if ($nick['u_nick'] == "") { $query = "SELECT u_nick,u_id from user " . "WHERE u_nick='" . mysql_real_escape_string(coreCheckName($chatzeile[1], $check_name)) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $nick = mysql_fetch_array($result); } @mysql_free_result($result); } $ignore = false; $query2 = "SELECT * FROM iignore WHERE i_user_aktiv='{$nick['u_id']}' AND i_user_passiv = '{$u_id}'"; $result2 = mysql_query($query2); $num = mysql_numrows($result2); if ($num >= 1) { $ignore = true; } // Falls nick gefunden, Mail versenden if ($nick['u_nick'] != "" && $nick['u_id'] && $nick['u_level'] != "G" && $nick['u_level'] != "Z" && $ignore == false) { if (strlen($text) > 4) { $result = mail_sende($u_id, $nick['u_id'], $text); if ($result[0]) { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg80'])); } else { system_msg("", 0, $u_id, $system_farbe, $result[1]); } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg81']); } } elseif ($nick['u_level'] == "G" || $nick['u_level'] == "Z") { // Nachricht konnte nicht verschickt werden, als Kopie ausgeben system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg95'])); system_msg("", 0, $u_id, $system_farbe, str_replace("%nachricht%", $text, $t['chat_msg77'])); } else { // Nachricht konnte nicht verschickt werden, als Kopie ausgeben // ignoriere User dürfen kein Mail schicken if ($ignore == true) { system_msg("", 0, $u_id, $system_farbe, str_replace("%user%", $nick['u_nick'], $t['chat_msg103'])); } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg8'])); system_msg("", 0, $u_id, $system_farbe, str_replace("%nachricht%", $text, $t['chat_msg77'])); } } } elseif (!$communityfeatures) { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg74']); } elseif ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } elseif (strlen($text) <= 1) { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg81']); } else { // user ist geknebelt... $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", $u_id, $u_id, $system_farbe, $txt); } break; case "/freunde": case "/freund": case "/buddy": // Fügt Freund der Freundesliste hinzu oder löscht einen Eintrag if ($u_level != "G" && $communityfeatures) { $privat = FALSE; $text = html_parse($privat, htmlspecialchars($chatzeile[2] . " " . $chatzeile[3])); if ($chatzeile[1]) { // Nach nicknamen suchen $nick = nick_ergaenze($chatzeile[1], "online", 1); // Falls keinen Empfänger gefunden, in Usertabelle nachsehen if ($nick['u_nick'] == "") { $query = "SELECT u_nick,u_id,u_level from user " . "WHERE u_nick='" . mysql_real_escape_string(coreCheckName($chatzeile[1], $check_name)) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $nick = mysql_fetch_array($result); } @mysql_free_result($result); } $freunddazu = 1; if ($nick['u_nick'] != "" && $nick['u_id']) { $query2 = "SELECT * FROM iignore WHERE i_user_aktiv='{$nick['u_id']}' AND i_user_passiv = '{$u_id}'"; $result2 = mysql_query($query2); $num = mysql_numrows($result2); if ($num >= 1) { $freunddazu = -1; } if ($nick['u_level'] == 'Z') { $freunddazu = -2; } if ($nick['u_level'] == 'G') { $freunddazu = -3; } @mysql_free_result($result2); } // Falls nick gefunden, prüfen ob er bereits in Tabelle steht if ($nick['u_nick'] != "" && $nick['u_id']) { $query = "SELECT f_id from freunde WHERE " . "(f_userid={$nick['u_id']} AND f_freundid={$u_id} ) " . "OR " . "(f_userid={$u_id} AND f_freundid={$nick['u_id']} )"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { // User ist bereits Freund -> entfernen $query = "DELETE from freunde WHERE " . "(f_userid={$nick['u_id']} AND f_freundid={$u_id}) " . "OR " . "(f_userid={$u_id} AND f_freundid={$nick['u_id']})"; $result = mysql_query($query, $conn); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $nick['u_nick'], $t['chat_msg84'])); } elseif ($nick['u_id'] == $u_id) { // Eigener Freund ist verboten system_msg("", 0, $u_id, $system_farbe, $t['chat_msg89']); } else { if ($freunddazu == 1) { // User ist noch kein Freund -> hinzufügen unset($f); $f['u_id'] = $nick['u_id']; $f['u_nick'] = $nick['u_nick']; if (strlen($text) > 1) { $f['f_text'] = $text; } #schreibe_db("freunde",$f,0,"f_id"); $text = neuer_freund($u_id, $f); # system_msg("",0,$u_id,$system_farbe,str_replace("%u_name%",$nick[u_nick],$t[chat_msg83])); system_msg("", 0, $u_id, $system_farbe, $text); } else { if ($freunddazu == -1) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $nick['u_nick'], $t['chat_msg116'])); } else { if ($freunddazu == -2) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $nick['u_nick'], $t['chat_msg117'])); } else { if ($freunddazu == -3) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $nick['u_nick'], $t['chat_msg118'])); } } } } } } else { // User nicht gefunden system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg8'])); } } // Listet alle Freunde auf $query = "SELECT f_id,f_text,f_userid,f_freundid,f_zeit FROM freunde WHERE f_userid={$u_id} AND f_status = 'bestaetigt' " . "UNION " . "SELECT f_id,f_text,f_userid,f_freundid,f_zeit FROM freunde WHERE f_freundid={$u_id} AND f_status = 'bestaetigt' " . "ORDER BY f_zeit desc "; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $u_nick, $t['chat_msg85'])); while ($row = mysql_fetch_object($result)) { // User aus DB lesen if ($row->f_userid != $u_id) { $query = "SELECT u_nick,u_id,u_level,u_punkte_gesamt,u_punkte_gruppe,o_id," . "date_format(u_login,'%d.%m.%y %H:%i') as login, " . "UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_login) AS online " . "from user left join online on o_user=u_id " . "WHERE u_id={$row->f_userid} "; $result2 = mysql_query($query, $conn); } elseif ($row->f_freundid != $u_id) { $query = "SELECT u_nick,u_id,u_level,u_punkte_gesamt,u_punkte_gruppe,o_id," . "date_format(u_login,'%d.%m.%y %H:%i') as login, " . "UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_login) AS online " . "from user left join online on o_user=u_id " . "WHERE u_id={$row->f_freundid} "; $result2 = mysql_query($query, $conn); } if ($result2 && mysql_num_rows($result2) > 0) { // User gefunden -> Ausgeben $row2 = mysql_fetch_object($result2); if ($row2->o_id == "" || $row2->o_id == "NULL") { $row2->online = ""; } $txt = user($row2->u_id, $row2, $o_js, TRUE, " ", $row2->online, $row2->login, FALSE); } else { // User nicht gefunden, Freund löschen $txt = "NOBODY"; $query = "DELETE from freunde WHERE f_id={$row->f_id}"; $result2 = mysql_query($query, $conn); } // Text als Systemnachricht ausgeben if ($row->f_text) { $txt .= " (" . $row->f_text . ")"; } system_msg("", 0, $u_id, $system_farbe, " " . $txt); } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg86']); } @mysql_free_result($result); } elseif (!$communityfeatures) { // Fehlermeldung Community system_msg("", 0, $u_id, $system_farbe, $t['chat_msg74']); } else { // Fehlermeldung Gast system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } break; case "/time": // Gibt die Systemuhrzeit aus if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { $tempzeit = $t['chat_msg114']; $tempzeit = str_replace("%datum%", strftime('%d.%m.%Y'), $tempzeit); $tempzeit = str_replace("%uhrzeit%", strftime('%H:%M:%S'), $tempzeit); system_msg("", 0, $u_id, $system_farbe, $tempzeit); unset($tempzeit); } break; case "/blacklist": case "/blackliste": // Fügt Eintrag der Blacklist hinzu oder löscht einen Eintrag if ($admin && $communityfeatures) { $privat = FALSE; $text = html_parse($privat, htmlspecialchars($chatzeile[2] . " " . $chatzeile[3])); if ($chatzeile[1]) { // Nach nicknamen suchen $nick = nick_ergaenze($chatzeile[1], "online", 1); // Falls keinen Empfänger gefunden, in Usertabelle nachsehen if ($nick['u_nick'] == "") { $chatzeile[1] = coreCheckName($chatzeile[1], $check_name); $query = "SELECT u_nick,u_id from user " . "WHERE u_nick='" . mysql_real_escape_string($chatzeile[1]) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $nick = mysql_fetch_array($result); } @mysql_free_result($result); } // Falls nick gefunden, prüfen ob er bereits in Tabelle steht if ($nick['u_nick'] != "" && $nick['u_id']) { $query = "SELECT f_id from blacklist WHERE " . "f_blacklistid={$nick['u_id']} "; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0) { // User ist bereits auf der Liste -> entfernen $query = "DELETE from blacklist WHERE " . "f_blacklistid={$nick['u_id']} "; $result = mysql_query($query, $conn); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $nick['u_nick'], $t['chat_msg97'])); } elseif ($nick['u_id'] == $u_id) { // Eigener Freund ist verboten system_msg("", 0, $u_id, $system_farbe, $t['chat_msg99']); } else { // User ist noch kein Eintrag -> hinzufügen $f['f_userid'] = $u_id; $f['f_blacklistid'] = $nick['u_id']; if (strlen($text) > 1) { $f['f_text'] = $text; } schreibe_db("blacklist", $f, 0, "f_id"); system_msg("", 0, $u_id, $system_farbe, str_replace("%u_name%", $nick['u_nick'], $t['chat_msg96'])); } } else { // User nicht gefunden system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[1], $t['chat_msg8'])); } } else { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg98']); } @mysql_free_result($result); } elseif (!$communityfeatures) { // Fehlermeldung Community system_msg("", 0, $u_id, $system_farbe, $t['chat_msg74']); } else { // Fehlermeldung system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_msg1'])); } break; case "/sms": if ($u_level != "G" && $communityfeatures && $smsfeatures) { $text = html_parse($privat, htmlspecialchars($chatzeile[2] . " " . $chatzeile[3])); // Empfänger im Chat suchen // /talk muss z.B. mit "/talk kleiner" auch dann an kleiner gehen // wenn kleiner in anderem Raum ist und im eigenen Raum ein kleinerpfuscher anwesend ist. if ($nick['u_nick'] == "") { $nick = nick_ergaenze($chatzeile[1], "online", 1); } // Falls keinen Empfänger gefunden, in Usertabelle nachsehen if ($nick['u_nick'] == "") { $chatzeile[1] = coreCheckName($chatzeile[1], $check_name); $query = "SELECT u_nick,u_id from user " . "WHERE u_nick='" . mysql_real_escape_string($chatzeile[1]) . "'"; $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) == 1) { $nick = mysql_fetch_array($result); } @mysql_free_result($result); } // Falls Empfänger gefunden, Nachricht versenden if ($nick['u_nick'] != "") { // nick gefunden und Eindeutig. if ($text != " ") { sms_msg($u_name, $u_id, $nick['u_id'], $u_farbe, $text, $userdata); if ($nick['u_away'] != "") { system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}:</b> {$nick['u_nick']} {$t['away1']} {$nick['u_away']}"); } } } else { // Nachricht konnte nicht verschickt werden, als Kopie ausgeben system_msg("", 0, $u_id, $system_farbe, str_replace("%nachricht%", $text, $t['chat_msg77'])); } } elseif (!$communityfeatures or !$smsfeatures) { // Fehlermeldung Community system_msg("", 0, $u_id, $system_farbe, $t['chat_msg74']); } else { // Fehlermeldung Gast system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } break; case "/quiddice": case "/dicecheck": if (!isset($o_dicecheck)) { mysql_query("ALTER TABLE online ADD o_dicecheck VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ''", $conn); $o_dicecheck = ""; } if (!$o_dicecheck) { if (preg_match("!^\\d+[wW]\\d+\$!", $chatzeile[1])) { $o_dicecheck = mysql_real_escape_string($chatzeile[1]); mysql_query("UPDATE online SET o_dicecheck = '{$o_dicecheck}' WHERE o_user = {$u_id}", $conn); if (!isset($t['chat_dicecheck_msg0'])) { $t['chat_dicecheck_msg0'] = "<B>{$chat}:</B> <b>%dicecheck%</b> wurde aktiviert. Bitte klicke auf RESET."; } system_msg("", 0, $u_id, $system_farbe, str_replace("%dicecheck%", $chatzeile[0] . " " . $chatzeile[1], $t['chat_dicecheck_msg0'])); } else { if (!isset($t['chat_dicecheck_msg1'])) { $t['chat_dicecheck_msg1'] = "<B>{$chat}:</B> Beispiel: <b>%dicecheck% 3W6</b> prüft alle Würfelwürfe, ob sie mit /dice 3W6 geworfen wurden."; } system_msg("", 0, $u_id, $system_farbe, str_replace("%dicecheck%", $chatzeile[0], $t['chat_dicecheck_msg1'])); } } else { $o_dicecheck = ""; mysql_query("UPDATE online SET o_dicecheck = '' WHERE o_user = {$u_id}", $conn); if (!isset($t['chat_dicecheck_msg2'])) { $t['chat_dicecheck_msg2'] = "<B>{$chat}:</B> <b>%dicecheck%</b> wurde deaktiviert. Bitte klicke auf RESET."; } system_msg("", 0, $u_id, $system_farbe, str_replace("%dicecheck%", $chatzeile[0], $t['chat_dicecheck_msg2'])); } break; default: if (!($o_knebel > 0)) { // Gibt Spruch aus, falls Eingabe mit = beginnt if (preg_match("/^=/", $chatzeile[0])) { // Spruch suchen und ausgeben if ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t['chat_msg55']); } else { // Art des Spruchs // 0: Ohne Argumente // 1: Username wurde angegeben // 2: Username und Zusatztext wurden übergeben // Wenn in $chatzeile[1] oder anderen auser 0 ein " vorkommt, // dann leerzeichen durch + ersetzen und neu splitten if (!isset($chatzeile[1])) { $chatzeile[1] = ""; } if (!isset($chatzeile[2])) { $chatzeile[2] = ""; } if (!isset($chatzeile[3])) { $chatzeile[3] = ""; } if (preg_match("/\"/", $chatzeile[1]) || preg_match("/\"/", $chatzeile[2]) || preg_match("/\"/", $chatzeile[3])) { $text = trim($text); // Nur bei gerader anzahl an " geht es if (substr_count($text, '"') == 2) { $temp = explode('"', $text, 3); if (trim($temp[2]) == '') { $temp[1] = "\"" . $temp[1] . "\""; } $text = $temp[0] . str_replace(' ', '+', trim($temp[1])) . " " . str_replace(' ', '+', trim($temp[2])); $chatzeile = preg_split("/ /", $text, 4); } else { if (substr_count($text, '"') == 4) { $temp = explode('"', $text, 5); $text = $temp[0] . "\"" . str_replace(' ', '+', $temp[1]) . "\" " . str_replace(' ', '+', $temp[3]); $chatzeile = preg_split("/ /", $text, 4); } } if (!isset($chatzeile[3])) { $chatzeile[3] = ""; } } // Befehl bestimmen und ungültige Zeichen filtern $spruchname = strtr(substr($chatzeile[0], 1), "*%\$!?.,;:\\/", ""); $username = $chatzeile[1]; $zusatztext = $chatzeile[2] . " " . $chatzeile[3]; if ($username) { $nick = nick_ergaenze($username, "raum", 1); } if (isset($nick) && $nick != "") { $username = $nick['u_nick']; } $spruchart = 0; if ($username) { $spruchart++; } if ($zusatztext != " ") { $spruchart++; } $username = str_replace("+", " ", $username); $username = trim(str_replace("\"", "", $username)); $zusatztext = str_replace("+", " ", $zusatztext); $zusatztext = trim(str_replace("\"", "", $zusatztext)); // Spruch suchen // Sprüche in Array lesen $sp_list = file("conf/{$datei_spruchliste}"); $sp_such = "^" . preg_quote($spruchname, "/") . "\t" . $spruchart . "\t"; for (@reset($sp_list); list(, $sp_text) = each($sp_list) and !preg_match("/" . $sp_such . "/i", $sp_text);) { } // Spruch gefunden? if (preg_match("/" . $sp_such . "/i", $sp_text)) { // Spruch parsen $spruchtmp = preg_split("/\t/", $sp_text, 3); $spruchtxt = $spruchtmp[2]; $spruchtxt = str_replace("`2", $zusatztext, $spruchtxt); $spruchtxt = str_replace("`1", $username, $spruchtxt); $spruchtxt = str_replace("`0", $u_name, $spruchtxt); // Spruch ausgeben $spruchtxt = str_replace("\n", "", $spruchtxt); if (!$ist_moderiert || $u_level == "M") { hidden_msg($u_name, $u_id, $u_farbe, $r_id, trim(html_parse($privat, htmlspecialchars($spruchtxt . " "))) . "<!-- ({$u_nick}) -->"); } else { system_msg("", $u_id, $u_id, $system_farbe, $t['moderiert1']); } } else { // Fehler ausgeben $fehler = $t['chat_spruch3']; if ($spruchart == 2) { $fehler = $t['chat_spruch1']; } if ($spruchart == 1) { $fehler = $t['chat_spruch2']; } $fehler = str_replace("%spruchname%", $spruchname, $fehler); $fehler = str_replace("%u_name%", $u_name, $fehler); system_msg("", 0, $u_id, $system_farbe, $fehler); // Hinweise ausgeben for (@reset($sp_list); list(, $sp_text) = each($sp_list);) { if (preg_match("/^" . preg_quote($spruchname, "/") . "\t/i", $sp_text)) { $spruchtmp = preg_split("/\t/", $sp_text, 3); $txt = "<SMALL><B>{$t['chat_spruch4']} <I>" . $spruchtmp[0] . " " . $spruchtmp[1] . "</I></B> <" . $spruchtmp[2] . "></SMALL>"; system_msg("", 0, $u_id, $system_farbe, $txt); } } } } } else { // Gibt Fehler aus, falls Eingabe mit / beginnt if (preg_match("/^\\//", $chatzeile[0])) { system_msg("", 0, $u_id, $system_farbe, str_replace("%chatzeile%", $chatzeile[0], $t['chat_spruch5'])); } else { // Normaler Text im Chat ausgeben // Text filtern und in DB schreiben // Nicknamen ergänzen, gesucht wird nach aktiven usern im selben Raum $temp = substr($chatzeile[0], -1); // Ansprechen mit "Nick:" "@nick" oder "Nick," bzw "Nick." // Problem: "Nick," und "Nick." macht Probleme bei allen Wörten, die am Anfang mit , oder "..." // getrennt geschrieben werden // z.b. "so, ich gehe jetzt" wird zu "[zu Sonnenschein] ich gehe jetzt" wenn User Sonnenschein im Raum ist // if ($temp==":" || $temp=="@" || $temp==",") { // Daher auskommentiert und nur "Nick:" "@nick" und testweise "Nick." akzeptiert // da obriges seltener für den . passiert, und der . öfters aus versehen statt dem : erwischt wird if ($temp == ":" || $temp == "@") { $nick = nick_ergaenze($chatzeile[0], "raum", 0); if ($nick['u_nick'] != "") { // Falls User gefunden wurde Nicknamen einfügen und filtern $f['c_text'] = "[" . $t['chat_spruch6'] . " {$nick['u_nick']}] " . html_parse($privat, htmlspecialchars($chatzeile[1] . " " . $chatzeile[2] . " " . $chatzeile[3])); if ($nick['u_away'] != "") { system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}:</b> {$nick['u_nick']} {$t['away1']} {$nick['u_away']}"); } } else { // keine Fehlermeldung, wird von nick_replace schon erzeugt... // Ansonsten Chatzeile gefiltert ausgeben $f['c_text'] = html_parse($privat, htmlspecialchars($text)); } } elseif (isset($chatzeile[1]) && substr($chatzeile[1], 0, 1) == "@") { $nick = nick_ergaenze($chatzeile[1], "raum", 0); if ($nick['u_nick'] != "") { // Falls User gefunden wurde Nicknamen einfügen und filtern $f['c_text'] = "[" . $t['chat_spruch6'] . " {$nick['u_nick']}] " . html_parse($privat, htmlspecialchars($chatzeile[0] . " " . $chatzeile[2] . " " . $chatzeile[3])); if ($nick['u_away'] != "") { system_msg("", 0, $u_id, $system_farbe, "<b>{$chat}:</b> {$nick['u_nick']} {$t['away1']} {$nick['u_away']}"); } } else { // keine Fehlermeldung, wird von nick_replace schon erzeugt... // Ansonsten Chatzeile gefiltert ausgeben $f['c_text'] = html_parse($privat, htmlspecialchars($text)); } } else { // Chatzeile gefiltert ausgeben $f['c_text'] = html_parse($privat, htmlspecialchars($text)); } // Attribute ergänzen und Nachricht schreiben $f['c_von_user'] = $u_name; $f['c_von_user_id'] = $u_id; $f['c_raum'] = $r_id; $f['c_typ'] = $typ; $f['c_farbe'] = $u_farbe; // Ist Raum moderiert? $ist_moderiert und $raum_einstellungen wurde in raum_ist_moderiert() gesetzt if (!$ist_eingang && !$ist_moderiert) { // raum ist nicht moderiert -> schreiben. $back = schreibe_chat($f); // In Session merken, dass Text im Chat geschrieben wurde $query = "UPDATE online SET o_timeout_zeit=DATE_FORMAT(NOW(),\"%Y%m%d%H%i%s\"), o_timeout_warnung='N' " . "WHERE o_user={$u_id}"; $result = mysql_query($query, $conn); // Punkte berechnen und User gutschreiben // Punkte=Anzahl der Wörter mit mindestens 4 Buchstaben // Punkte werden nur in permanenten, offen Räumen gutgeschrieben! if ($communityfeatures && $u_level != "G" && ($raum_einstellungen['r_status1'] == "O" || $raum_einstellungen['r_status1'] == "m") && $raum_einstellungen['r_status2'] == "P") { // Punkte gutschreiben, wenn im Raum mindestens $punkte_ab_user User online sind $query = "select count(o_id) from online where o_raum={$o_raum}"; $result = mysql_query($query, $conn); if ($punktefeatures && $result && mysql_result($result, 0, 0) >= $punkte_ab_user) { // löscht die * und _ aus dem Eingabetext, damit es für z.b. *_*_ keine Punkte mehr gibt $punktetext = $f['c_text']; $punktetext = str_replace('<i>', '', $punktetext); $punktetext = str_replace('<b>', '', $punktetext); $punktetext = str_replace('</i>', '', $punktetext); $punktetext = str_replace('</b>', '', $punktetext); punkte(strlen(trim(preg_replace('/(^[[:space:]]*|[[:space:]]+)[^[:space:]]+/', "x", preg_replace('/(^|[[:space:]]+)[^[:space:]]{1,3}/', " ", $punktetext)))), $o_id, ""); unset($punktetext); } } } elseif ($ist_moderiert) { if ($u_level == "M") { // sonderfall: moderator -> hier doch schreiben // vorher testen, ob es markierte fragen gibt: schreibe_moderation(); $back = schreibe_chat($f); // In Session merken, dass Text im Chat geschrieben wurde $query = "UPDATE online SET o_timeout_zeit=DATE_FORMAT(NOW(),\"%Y%m%d%H%i%s\"), o_timeout_warnung='N' " . "WHERE o_user={$u_id}"; $result = mysql_query($query, $conn); } else { if ($f['c_text'] != "") { // raum ist moderiert -> normal nicht schreiben. $back = schreibe_moderiert($f); // In Session merken, dass Text im Chat geschrieben wurde $query = "UPDATE online SET o_timeout_zeit=DATE_FORMAT(NOW(),\"%Y%m%d%H%i%s\"), o_timeout_warnung='N' " . "WHERE o_user={$u_id}"; $result = mysql_query($query, $conn); system_msg("", 0, $u_id, $system_farbe, $t['moderiert2']); system_msg("", 0, $u_id, $system_farbe, ">>> " . $f['c_text']); } } } elseif ($ist_eingang && strlen(trim($f['c_text'])) > 0) { system_msg("", 0, $u_id, $system_farbe, $raum_einstellungen['r_topic']); } return $back; } } } else { // user ist geknebelt... $zeit = gmdate("H:i:s", $o_knebel); $txt = str_replace("%zeit%", $zeit, $t['knebel6']); system_msg("", $u_id, $u_id, $system_farbe, $txt); } } }
function html_parse($privat, $text, $at_sonderbehandlung = 0) { // Filtert Text, ersetzt Smilies und ersetzt folgende Zeichen: // _ in <B> // * in <I> // http(s)://###### oder www.###### in <A HREF="http(s)://###" TARGET=_new>http(s)://###</A> // E-Mail Adressen in A-Tag mit Mailto // privat ist wahr bei privater Nachricht global $admin, $smilies_pfad, $smilies_datei, $sprachconfig, $o_raum, $u_id, $u_level; global $t, $system_farbe, $erweitertefeatures, $conn, $smilies_anzahl, $smilies_config; global $ist_moderiert, $smilies_aus; // Grafik-Smilies ergänzen, falls Funktion aktiv und Raum ist nicht moderiert // Für Gäste gesperrt // $ist_moderiert ist in raum_ist_moderiert() (Caching!) gesetzt worden! if (!$ist_moderiert && $erweitertefeatures) { preg_match_all("/(&[^ ]+)/", $text, $test, PREG_PATTERN_ORDER); $anzahl = count($test[0]); if ($anzahl > 0) { if ($anzahl > $smilies_anzahl) { // Fehlermeldung ausgeben system_msg("", 0, $u_id, $system_farbe, $t[chat_msg54]); } elseif ($u_level == "G") { system_msg("", 0, $u_id, $system_farbe, $t[chat_msg55]); } // Prüfen, ob im aktuellen Raum smilies erlaubt sind if (!$privat) { $query = "SELECT r_smilie FROM raum WHERE r_id=" . intval($o_raum); $result = mysql_query($query, $conn); if ($result && mysql_num_rows($result) > 0 && mysql_result($result, 0, 0) != "Y") { $smilie_ok = FALSE; } else { $smilie_ok = TRUE; } } else { $smilie_ok = TRUE; } if ($smilies_aus == "1") { $smilie_ok = false; } // Konfiguration für smilies lesen if ($smilies_config) { @(require "conf/" . $smilies_config); } else { @(require "conf/" . $sprachconfig . "-" . $smilies_datei); } if (!$smilie_ok && $smilies_datei != "") { // Nur die Fehlermeldung ausgeben, falls es das angegeben Smile auch gibt $anzahl = 0; while (list($i, $smilie_code) = each($test[0])) { $smilie_code = str_replace("&", "&", $smilie_code); if ($smilie[$smilie_code]) { $anzahl++; } } if ($anzahl > 0) { system_msg("", 0, $u_id, $system_farbe, $t[chat_msg76]); } } else { while (list($i, $smilie_code) = each($test[0])) { if ($anzahl > $smilies_anzahl || $u_level == "G") { // Mehr als $smilies_anzahl Smilies sind nicht erlaubt $text = str_replace(" " . $smilie_code . " ", "", $text); } else { // Falls smilie existiert, ersetzen $smilie_code2 = str_replace("&", "&", $smilie_code); if (isset($smilie[$smilie_code2])) { $text = str_replace($smilie_code, "<SMIL SRC=\"" . $smilies_pfad . $smilie[$smilie_code2] . "\" SMIL>", $text); } } } } } } // doppelte Zeichen merken und wegspeichern... $text = str_replace("__", "###substr###", $text); $text = str_replace("**", "###stern###", $text); $text = str_replace("@@", "###klaffe###", $text); $text = str_replace("[", "###auf###", $text); $text = str_replace("]", "###zu###", $text); $text = str_replace("|", "###strich###", $text); $text = str_replace("+", "###plus###", $text); // jetzt nach nach italic und bold parsen... * in <I>, $_ in <B> if (substr_count($text, "http://") == 0 && substr_count($text, "https://") == 0 && substr_count($text, "www.") == 0 && !preg_match("(\\w[-._\\w]*@\\w[-._\\w]*\\w\\.\\w{2,3})", $text)) { $text = preg_replace('|\\*(.*?)\\*|', '<i>\\1</i>', preg_replace('|_(.*?)_|', '<b>\\1</b>', $text)); } // erst mal testen ob www oder http oder email vorkommen if (preg_match("/(https?:|www\\.|@)/i", $text)) { // Zerlegen der Zeile in einzelne Bruchstücke. Trennzeichen siehe $split // leider müssen zunächst erstmal in $text die gefundenen urls durch dummies // ersetzt werden, damit bei der Angabge von 2 gleichen urls nicht eine bereits // ersetzte url nochmal ersetzt wird -> gibt sonst Müll bei der Ausgabe. // wird evtl. später nochmal gebraucht... $split = '/[ ,\\[\\]\\(\\)]/'; $txt = preg_split($split, $text); // wieviele Worte hat die Zeile? for ($i = 500; $i >= 0; $i--) { if (isset($txt[$i]) && $txt[$i] != "") { break; } } $text2 = $text; // Schleife über alle Worte... for ($j = 0; $j <= $i; $j++) { // test, ob am Ende der URL noch ein Sonderzeichen steht... $txt[$j] = preg_replace("!\\?\$!", "", $txt[$j]); $txt[$j] = preg_replace("!\\.\$!", "", $txt[$j]); } for ($j = 0; $j <= $i; $j++) { // erst mal nick_replace, falls Wort mit "@" beginnt. if (substr($txt[$j], 0, 1) == "@") { $nick = nick_ergaenze($txt[$j], "raum", 1); // fehlermeldungen unterdrücken. if (($admin || $u_level == "A") && $nick['u_nick'] == "") { $nick = nick_ergaenze($txt[$j], "online", 1); } // fehlermeldungen unterdrücken. if ($nick['u_nick'] != "") { if ($at_sonderbehandlung == 1) { $rep = $nick[u_nick]; $text = preg_replace("!{$txt[$j]}!", $rep, $text); } else { $rep = "[" . $t['chat_spruch6'] . " " . $nick['u_nick'] . "] "; $text = $rep . preg_replace("!{$txt[$j]}!", "", $text); } } if ($u_level == "G") { break; } } if ($u_level != "G") { // E-Mail Adressen in A-Tag mit Mailto // E-Mail-Adresse -> Format = *@*.* if (preg_match('/^[\\w][\\w.-]*@[[:alnum:].-]+\\.[[:alnum:]-]{2,}$/', $txt[$j])) { // Aber im Prinzip müsste man sich die RFCs für Mailadressen und Domainnamen nochmal anschauen! // Wort=Mailadresse? -> im text durch dummie ersetzen, im wort durch href. $text = preg_replace("/!{$txt[$j]}!/", "####{$j}####", $text); // kranke lösung für ie: neues fenster mit mailto aufpoppen, dann gleich wieder schließen... $rep = "<a href=mailto:" . $txt[$j] . " onclick=\"ww=window.open('mailto:" . $txt[$j] . "','Chat_Klein','resizable=yes,scrollbars=yes,width=10,height=10'); ww.window.close(); return(false);\">" . $txt[$j] . "</a>"; $txt[$j] = preg_replace("/" . $txt[$j] . "/", $rep, $txt[$j]); } // www.###### in <A HREF="http://###" TARGET=_new>http://###</A> if (preg_match("/^www\\..*\\..*/", $txt[$j])) { // sonderfall -> "?" in der URL -> dann "?" als Sonderzeichen behandeln... $txt2 = preg_replace("!\\?!", "\\?", $txt[$j]); // Doppelcheck, kann ja auch mit http:// in gleicher Zeile nochmal vorkommen. also erst die // http:// mitrausnehmen, damit dann in der Ausgabe nicht http://http:// steht... $text = preg_replace("!http(s?)://{$txt2}!", "-###\$1{$j}####", $text); // Wort=URL mit www am Anfang? -> im text durch dummie ersetzen, im wort durch href. $text = preg_replace("!{$txt2}!", "####{$j}####", $text); // und den ersten Fall wieder Rückwärts, der wird ja später in der schleife nochmal behandelt. $text = preg_replace("!-###(s?)\\d*####/!", "http\$1://{$txt2}/", $text); // url aufbereiten $txt[$j] = preg_replace("/" . $txt2 . "/", "<a href=\"redirect.php?url=" . urlencode("http://{$txt2}") . "\" target=_blank>http://{$txt2}</a>", $txt[$j]); } // http(s)://###### in <A HREF="http(s)://###" TARGET=_new>http(s)://###</A> if (preg_match("!^https?://!", $txt[$j])) { // Wort=URL mit http(s):// am Anfang? -> im text durch dummie ersetzen, im wort durch href. // Zusatzproblematik.... könnte ein http-get-URL sein, mit "?" am Ende oder zwischendrin... urgs. // sonderfall -> "?" in der URL -> dann "?" als Sonderzeichen behandeln... $txt2 = preg_replace("!\\?!", "\\?", $txt[$j]); $text = preg_replace("!{$txt2}!", "####{$j}####", $text); // und wieder Rückwärts, falls zuviel ersetzt wurde... $text = preg_replace("!####\\d*####/!", "{$txt[$j]}/", $text); // url aufbereiten $txt[$j] = preg_replace("!{$txt2}!", "<a href=\"redirect.php?url=" . urlencode($txt2) . "\" target=_blank>{$txt2}</a>", $txt[$j]); } } } // nun noch die Dummy-Strings durch die urls ersetzen... for ($j = 0; $j <= $i; $j++) { // erst mal "_" in den dummy-strings vormerken... // es soll auch urls mit "_" geben ;-) $txt[$j] = str_replace("_", "###substr###", $txt[$j]); $text = preg_replace("![-#]###{$j}####!", $txt[$j], $text); } } // ende http, mailto, etc. // endif; // gemerkte @, _ und * zurückwandeln. $text = str_replace("###plus###", "+", $text); $text = str_replace("###strich###", "|", $text); $text = str_replace("###auf###", "[", $text); $text = str_replace("###zu###", "]", $text); $text = str_replace("###substr###", "_", $text); $text = str_replace("###stern###", "*", $text); $text = str_replace("###klaffe###", "@", $text); return $text; }
if (!$nick) { $nick = $handynummer; $nick = substr($nick, 0, strlen($nick) - 3) . "XXX"; } return $nick; } if ($timestamp && $smstext && $nummer && $keyword && $shortnumber) { $query = "INSERT INTO smsin (s_timestamp, s_text, s_handynummer,s_keyword,s_shortnumber) VALUES ('" . mysql_real_escape_string($timestamp) . "','" . mysql_real_escape_string($smstext) . "','" . mysql_real_escape_string($nummer) . "','" . mysql_real_escape_string($keyword) . "','" . mysql_real_escape_string($shortnumber) . "')"; mysql_query($query); echo mysql_error(); echo "OK!<BR><HR>"; $text = trim(preg_replace("/^MC/i", "", $smstext)); $text2 = explode(" ", $text); $nick = trim($text2[0]); $text2[0] = ""; $text3 = implode(" ", $text2); echo "nick: {$nick} | text: {$text3}<BR>"; $s_nick = nick_ergaenze($nick, "online", 1); $u_id1 = $s_nick['u_id']; $s_nick = nick_ergaenze($nick, "chat", 1); $u_id2 = $s_nick['u_id']; if ($u_id1) { echo "u_id1 ist gesetzt!"; $nick = holeNick($nummer); priv_msg("MainChat: SMS von {$nick}:", 0, $u_id1, "#000000", $text3); mail_sende(0, $u_id2, $text3, "SMS von {$nick}"); echo "u_id2 ist gesetzt!"; } } else { echo "Fehler! Parameter fehlen!"; }