Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
<?php
// Funktionen, die NUR von interaktiv.php verwendet werden.
require_once("functions.php-func-verlasse_chat.php");
require_once("functions.php-func-nachricht.php");
require_once("functions.php-func-html_parse.php");
require_once("functions.php-func-raum_gehe.php");
if ($communityfeatures) {
require_once("functions.php-func-sms.php");
require_once("functions.php-freunde.php");
}
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, "&nbsp;", $row->online, "", FALSE);
} else {
$txt .= $raumname . ": "
. user($userdaten[u_id], $userdaten, TRUE,
FALSE, "&nbsp;", "", "", FALSE) . " -> "
. $userdaten[u_away];
}
system_msg("", 0, $u_id, $system_farbe, $txt);
}
mysql_free_result($result);
}
}
break;
case "/op":
// 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]&nbsp;"
. $t['chat_msg51'] . "=====]</b> " . $txt;
} else {
$txt2 = "<b>[" . $t['chat_msg52'] . "&nbsp;"
. $t['chat_msg50'] . "]</b> " . $txt;
}
while ($row = mysql_fetch_array($result)) {
$text = str_replace("%user%",
user($u_id, $userdata, TRUE, FALSE, "&nbsp;",
"", "", 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, "&nbsp;", "", "", FALSE)
. "&nbsp; ===== $t[chat_msg24] $t[chat_msg51]: =====</B> $txt");
} else {
system_msg("", $u_id, $u_id, $system_farbe,
"<B>"
. user($u_id, $userdata, TRUE,
FALSE, "&nbsp;", "", "", FALSE)
. "&nbsp; $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, "&nbsp;", "", "", 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,
"&nbsp;", "", "", 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;
endwhile;
$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,
"&nbsp;", "", "", 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 . "&nbsp;("
. str_replace(" ", "&nbsp;",
date("d.m.y H:i", $datum)) . ")" . $f4;
system_msg("", 0, $u_id, $system_farbe, $zeile);
endwhile;
}
} 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,
"&nbsp;", "", "", 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
// Raum ermitteln
$raum_id = $r_id;
if ($chatzeile[2] != "") {
$query = "SELECT r_id from raum WHERE r_name LIKE '" . mysql_real_escape_string($chatzeile[2]) . "%'";
$result = mysql_query($query, $conn);
if ($result AND mysql_num_rows($result) > 0) {
$row = mysql_fetch_object($result);
$raum_id = $row->r_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;
}
}
// Besitzer des Raums ermitteln
$query = "SELECT r_besitzer,r_name from raum WHERE r_id=$raum_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=$raum_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=$raum_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'] = $raum_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=$raum_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=$raum_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=$raum_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,
"&nbsp;", "", "", 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("<", "&lt;", $spruchtmp[2]);
$spruchtmp[2] = str_replace(">", "&gt;", $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> &lt;" . $spruchtmp[2]
. "&gt;";
system_msg("", 0, $u_id, $system_farbe, $txt);
endif;
next($spruchliste);
$i++;
endwhile;
else :
// Fehler ausgeben
system_msg("", 0, $u_id, $system_farbe, $t['chat_msg5']);
endif;
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])));
endif;
// 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, "&nbsp;",
"", "", 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, "&nbsp;",
"", "", 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 -&gt; $raum/$raumid";
$text = "<b>$chat:</b> $user[u_nick]: $raumalt -&gt; $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']));
}
// Zeigt oder ändert Farbe
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']);
endif;
}
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']);
endif;
}
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']);
endif;
}
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']);
endif;
}
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,
"&nbsp;", $r->online_zeit, $row->login,
FALSE) . "&nbsp;("
. htmlspecialchars($row->u_name) . "), ";
} else {
$text = $text
. user($row->u_id, $row, TRUE, TRUE,
"&nbsp;", $r->online_zeit, $row->login,
FALSE) . ", ";
}
if ($row->u_email)
$text .= "%email%&nbsp;"
. htmlspecialchars($row->u_email) . ", ";
if ($row->u_adminemail && $admin)
$text .= "%adminemail%&nbsp;"
. htmlspecialchars($row->u_adminemail)
. ", ";
$text .= "<B>[" . $whotext[$r->o_who] . "]</B>";
if ($r->o_who == 0)
$text .= ", %raum%&nbsp;" . $r->r_name;
if ($row->u_away) {
$awaytext = htmlspecialchars($row->u_away);
$awaytext = str_replace('&lt;b&gt;', '<B>',
$awaytext);
$awaytext = str_replace('&lt;/b&gt;', '</B>',
$awaytext);
$awaytext = str_replace('&lt;i&gt;', '<I>',
$awaytext);
$awaytext = str_replace('&lt;/i&gt;', '</I>',
$awaytext);
$awaytext = str_replace('&amp;lt;', '<',
$awaytext);
$awaytext = str_replace('&amp;gt;', '>',
$awaytext);
$awaytext = str_replace('&amp;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,
"&nbsp;", "", $row->login, FALSE)
. "&nbsp;("
. htmlspecialchars($row->u_name) . "), ";
} else {
$text = $text
. user($row->u_id, $row, TRUE, TRUE,
"&nbsp;", "", $row->login, FALSE) . ", ";
}
if ($row->u_email)
$text = $text . "%email%&nbsp;"
. htmlspecialchars($row->u_email) . ", ";
if ($row->u_adminemail && $admin)
$text = $text . "%adminemail%&nbsp;"
. htmlspecialchars($row->u_adminemail) . ", ";
if ($row->u_away) {
$awaytext = htmlspecialchars($row->u_away);
$awaytext = str_replace('&lt;b&gt;', '<B>',
$awaytext);
$awaytext = str_replace('&lt;/b&gt;', '</B>',
$awaytext);
$awaytext = str_replace('&lt;i&gt;', '<I>',
$awaytext);
$awaytext = str_replace('&lt;/i&gt;', '</I>',
$awaytext);
$awaytext = str_replace('&amp;lt;', '<',
$awaytext);
$awaytext = str_replace('&amp;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
case "/talk": // 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 = '$a[f_userid]' or o_user = '$a[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");
endif;
@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++;
endwhile;
@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']);