function sperre($r_id, $u_id, $u_name, $s_user, $s_user_name, $admin) { // Sperrt User s_user für Raum r_id oder hebt Sperre auf // Wirft User ggf aus dem Raum r_id global $lobby; global $dbase; global $timeout; global $t; global $u_level; global $conn; // Id der Lobby als Voreinstellung ermitteln $query = "SELECT r_id FROM raum WHERE r_name LIKE '{$lobby}' "; $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); if ($rows > 0) { $lobby_id = mysql_result($result, 0, "r_id"); } else { system_msg("", 0, $u_id, $system_farbe, $t['sperre1']); } mysql_free_result($result); if ($r_id != $lobby_id) { $query = "SELECT s_id FROM sperre " . "WHERE s_user={$s_user} " . "AND s_raum={$r_id}"; $result = mysql_query($query, $conn); $rows = mysql_num_rows($result); if ($rows == 0) { // Ist User s_user in diesem Raum? $o_id ermitteln $query2 = "SELECT o_id FROM online " . "WHERE o_raum={$r_id} " . "AND o_user={$s_user} " . "AND (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} "; $result2 = mysql_query($query2, $conn); $rows2 = mysql_num_rows($result2); if ($rows2 > 0) { // Sperre neu setzen $o_id = mysql_result($result2, 0, "o_id"); $f['s_user'] = $s_user; $f['s_raum'] = $r_id; schreibe_db("sperre", $f, "", "s_id"); // User aus Raum werfen global_msg($u_id, $r_id, "'{$u_name}' {$t['sperre2']} '{$s_user_name}' {$t['sperre3']}"); raum_gehe($o_id, $s_user, $s_user_name, $r_id, $lobby_id, FALSE); } else { // User ist nicht in diesem Raum... meldung ausgeben. system_msg("", 0, $u_id, $system_farbe, str_replace("%s_user_name%", $s_user_name, $t['sperre4'])); // trotzdem in Seprre eintragen. $f['s_user'] = $s_user; $f['s_raum'] = $r_id; schreibe_db("sperre", $f, "", "s_id"); } } else { // Sperre löschen $s_id = mysql_result($result, 0, "s_id"); $query2 = "DELETE FROM sperre WHERE s_id={$s_id} "; $result2 = mysql_query($query2, $conn); global_msg($u_id, $r_id, "'{$u_name}' {$t['sperre2']} '{$s_user_name}' {$t['sperre5']}"); } mysql_free_result($result); } else { // User ist in Lobby if (!($admin || $u_level == "A")) { system_msg("", 0, $u_id, $system_farbe, $t['sperre6']); } else { // User aus Chat werfen // Ist User s_user in diesem Raum? $o_id ermitteln $query2 = "SELECT o_id FROM online " . "WHERE o_raum={$r_id} " . "AND o_user={$s_user} " . "AND (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} "; $result2 = mysql_query($query2, $conn); $rows2 = mysql_num_rows($result2); if ($rows2 > 0) { // User rauswerfen $o_id = mysql_result($result2, 0, "o_id"); global_msg($u_id, $r_id, "'{$u_name}' {$t['sperre2']} '{$s_user_name}' {$t['sperre7']}"); // 2 sek vor dem ausloggen warten, damit der Störer die Meldung auch noch lesen kann !!! sleep(2); verlasse_chat($s_user, $s_user_name, $r_id); sleep(2); logout($o_id, $s_user, "sperre in lobby"); } else { system_msg("", 0, $u_id, $system_farbe, str_replace("%s_user_name%", $s_user_name, $t['sperre4'])); } } } }
$lobby_id = mysql_result($result2, 0, "r_id"); } @mysql_free_result($result2); // Raum ist nicht Lobby -> Löschen if ($f['r_id'] == $lobby_id) { echo "<P>" . str_replace("%r_name%", $row->r_name, $t['fehler12']) . "</P>\n"; } else { // Raum schließen $f['r_status1'] = "G"; schreibe_db("raum", $f, $f['r_id'], "r_id"); // Raum leeren $query = "SELECT o_user,o_name FROM online WHERE o_raum={$f['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['fehler4'])); $oo_raum = raum_gehe($o_id, $row2->o_user, $row2->o_name, $f['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={$f['r_id']} "; $result2 = mysql_query($query, $conn); @mysql_free_result($result2); // Gesperrte Räume löschen $query = "DELETE FROM sperre WHERE s_raum={$f['r_id']}"; $result2 = mysql_query($query, $conn); @mysql_free_result($result2); // ausgeben: raum wurde gelöscht. echo "<P>" . str_replace("%r_name%", $row->r_name, $t['fehler3']) . "</P>\n"; } } else {
echo $stylesheet; ?> </HEAD> <?php echo $body_tag; // Timestamp im Datensatz aktualisieren aktualisiere_online($u_id, $o_raum); // Aktionen ausführen, falls nicht innerhalb der letzten 5 // Minuten geprüft wurde (letzte Prüfung=o_aktion) if ($communityfeatures && time() > $o_aktion + 300) { aktion("Alle 5 Minuten", $u_id, $u_nick, $id); } // Wurde Raum r_id aus Formular übergeben? Falls ja Raum von $o_raum nach $r_id wechseln if (isset($r_id) && $o_raum != $r_id) { // Raum wechseln // Im Beichtstuhl-Modus dürfen Admins geschlossene Räume betreten $o_raum = raum_gehe($o_id, $u_id, $u_nick, $o_raum, $r_id, isset($beichtstuhl) ? $beichtstuhl : null); if ($o_raum == $r_id) { // User in Raum ausgeben raum_user($r_id, $u_id, $id); } // Falls Pull-Chat, chat-Fenster neu laden if ($backup_chat || $u_backup) { echo "<SCRIPT LANGUAGE=JavaScript>" . "chat_reload('chat.php?http_host={$http_host}&id={$id}')" . "</SCRIPT>\n"; } } // Daten für Raum lesen $query = "SELECT raum.* FROM raum,online WHERE r_id=o_raum " . "AND o_id={$o_id} ORDER BY o_aktiv DESC"; $result = mysql_query($query, $conn); if ($result && mysql_Num_Rows($result) != 0) { $row = mysql_fetch_object($result); $o_raum = $row->r_id;