Beispiel #1
0
         if (isset($f['u_level']) && $f['u_level'] == "C" || isset($f['u_level']) && $f['u_level'] == "S") {
             $queryii = "SELECT u_nick,u_id from user,iignore " . "WHERE i_user_passiv=" . intval($f[u_id]) . " AND u_id=i_user_aktiv order by i_id";
             $resultii = @mysql_query($queryii, $conn);
             $anzahlii = @mysql_num_rows($resultii);
             if ($resultii && $anzahlii > 0) {
                 for ($i = 0; $i < $anzahlii; $i++) {
                     $rowii = @mysql_fetch_object($resultii);
                     ignore($o_id, $rowii->u_id, $rowii->u_nick, $f['u_id'], $f['u_nick']);
                 }
             }
             @mysql_free_result($resultii);
         }
     }
     // Warnung für sicheren Modus ausgeben
     if ($u_backup == 0 && $f['u_backup'] == 1 && $u_id == $f['u_id']) {
         warnung($u_id, $u_nick, "sicherer_modus");
     }
     // Eingabe-Frame mit Farben aktualisieren
     if ($o_js && $o_who == 0 && isset($f['u_farbe']) && $f['u_farbe']) {
         echo "<SCRIPT LANGUAGE=JavaScript>" . "opener_reload('eingabe.php?http_host={$http_host}&id={$id}','3')" . "</SCRIPT>\n";
     }
 }
 // Falls User auf Level "Z" gesetzt wurde -> logoff
 if (ist_online($f['u_id']) && isset($f['u_level']) && $f['u_level'] == "Z") {
     // o_id und o_raum bestimmen
     $query = "SELECT o_id,o_raum FROM online " . "WHERE o_user=" . intval($f[u_id]);
     $result = mysql_query($query, $conn);
     $rows = mysql_num_rows($result);
     if ($rows > 0) {
         $row = mysql_fetch_object($result);
         verlasse_chat($f['u_id'], $f['u_nick'], $row->o_raum);
function betrete_chat($o_id, $u_id, $u_name, $u_level, $raum, $javascript, $u_backup)
{
    // User $u_id betritt Raum $raum (r_id)
    // Nachricht in Raum $raum wird erzeugt
    // Zeiger auf letzte Zeile wird zurückgeliefert
    global $dbase, $chat, $conn, $lobby, $eintrittsraum, $t, $hash_id, $communityfeatures, $beichtstuhl, $system_farbe, $u_punkte_gesamt;
    global $HTTP_SERVER_VARS;
    global $raum_eintrittsnachricht_kurzform, $raum_eintrittsnachricht_anzeige_deaktivieren;
    // Falls eintrittsraum nicht definiert, lobby voreinstellen
    if (strlen($eintrittsraum) == 0) {
        $eintrittsraum = $lobby;
    }
    // Ist $raum geschlossen oder User ausgesperrt?
    // ausnahme: geschlossener Raum ist Eingangsraum -> für e-rotic-räume
    // die sind geschlossen, aber bei manchen kostenlosen chats default :-(
    // Ausnahme ist Beichtstuhl-Modus, hier darf beim Login auch ein
    // geschlossener Raum betreten werden
    if (strlen($raum) > 0) {
        $query4711 = "SELECT r_id,r_status1,r_besitzer,r_name,r_min_punkte FROM raum WHERE r_id={$raum}";
        $result = mysql_query($query4711, $conn);
        if ($result && mysql_num_rows($result) > 0) {
            $rows = mysql_fetch_object($result);
            $r_min_punkte = $rows->r_min_punkte;
            if ($rows->r_name != $eintrittsraum) {
                switch ($rows->r_status1) {
                    case "G":
                    case "M":
                        // Grundsätzlich nicht in geschlossene oder moderierte räume
                        $raumeintritt = false;
                        // es sei denn, man ist dorthin eingeladen
                        $query2911 = "SELECT inv_user FROM invite WHERE inv_raum={$rows->r_id} AND inv_user={$u_id}";
                        $result2911 = mysql_query($query2911, $conn);
                        if ($result2911 > 0) {
                            if (mysql_num_rows($result2911) > 0) {
                                $raumeintritt = true;
                            }
                            mysql_free_result($result);
                        }
                        // oder man ist Raumbesiter dort
                        if ($rows->r_besitzer == $u_id) {
                            $raumeintritt = true;
                        }
                        // oder der Beichtstuhlmodus
                        if ($beichtstuhl) {
                            $raumeintritt = true;
                        }
                        // abweisen wenn $raumeintritt = false
                        if (!$raumeintritt) {
                            system_msg("", 0, $u_id, $system_farbe, str_replace("%r_name_neu%", $rows->r_name, $t['raum_gehe4']));
                            unset($raum);
                        }
                        break;
                    default:
                        break;
                }
            }
        }
        @mysql_free_result($result);
    }
    if (strlen($raum) > 0) {
        // Prüfung ob User aus Raum ausgesperrt ist
        $query4711 = "SELECT s_id FROM sperre WHERE s_raum=" . intval($raum) . " AND s_user={$u_id}";
        $result = mysql_query($query4711, $conn);
        if ($result > 0) {
            $rows = mysql_Num_Rows($result);
            if ($rows != 0 || $r_min_punkte > $u_punkte_gesamt) {
                // Aktueller Raum ist gesperrt, oder zu wenige Punkte
                // Ist User aus Raum ausgesperrt, dann nicht einfach den Eintrittsraum oder die Lobby nehmen,
                // da kann der User auch ausgesperrt sein.
                unset($raum);
                if (!$beichtstuhl) {
                    $query1222b = "SELECT r_id FROM raum left join sperre on r_id = s_raum and s_user = '******' " . "WHERE r_status1 = 'O' and r_status2 = 'P' and r_min_punkte <= {$u_punkte_gesamt} " . "and s_id is NULL " . "ORDER BY r_id ";
                    $result1222b = mysql_query($query1222b, $conn);
                    if ($result1222b > 0 && mysql_num_rows($result1222b) > 0) {
                        // Es gibt Räume, für die man noch nicht gesperrt ist.
                        // hiervon den ersten nehmen
                        $raum = mysql_result($result1222b, 0, 0);
                    }
                    mysql_free_result($result1222b);
                }
            }
            mysql_free_result($result);
        }
    }
    // print $raum;
    // Welchen Raum betreten?
    if (strlen($raum) == 0) {
        // Id des Eintrittsraums als Voreinstellung ermitteln
        $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_name='{$eintrittsraum}' ";
        $result = mysql_query($query4711, $conn);
        if ($result) {
            $rows = mysql_Num_Rows($result);
        }
        // eintrittsraum nicht gefunden? -> lobby probieren.
        if ($rows == 0) {
            $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_name='{$lobby}' ";
            $result = mysql_query($query4711, $conn);
            if ($result) {
                $rows = mysql_Num_Rows($result);
            }
        }
        // lobby  nicht gefunden? --> lobby anlegen.
        if ($rows == 0) {
            // lobby neu anlegen.
            $query4711 = "INSERT INTO raum " . "(r_id,r_name,r_eintritt,r_austritt,r_status1,r_besitzer,r_topic,r_status2,r_smilie) " . "VALUES (0,'{$lobby}','Willkommen','','O',1,'Eingangshalle','P','')";
            $result = mysql_query($query4711, $conn);
            // neu lesen.
            $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_name='{$lobby}' ";
            $result = mysql_query($query4711, $conn);
            if ($result) {
                $rows = mysql_Num_Rows($result);
            }
        }
    } else {
        // Gewählten Raum ermitteln
        $query4711 = "SELECT r_id,r_name,r_eintritt,r_topic " . "FROM raum WHERE r_id={$raum} ";
        $result = mysql_query($query4711, $conn);
        if ($result) {
            $rows = mysql_Num_Rows($result);
        }
    }
    if ($result && $rows == 1) {
        $r_id = mysql_result($result, 0, "r_id");
        $r_eintritt = mysql_result($result, 0, "r_eintritt");
        $r_topic = mysql_result($result, 0, "r_topic");
        $r_name = mysql_result($result, 0, "r_name");
        mysql_free_result($result);
    } else {
        echo "<BODY><P>Fehler: Ungültige Raum-ID {$raum} beim Login!</P></BODY></HTML>\n";
        exit;
    }
    // Aktuellen Raum merken, o_who auf chat setzen
    $f['o_raum'] = $r_id;
    $f['o_who'] = "0";
    // Nachricht im Chat ausgeben
    $back = nachricht_betrete($u_id, $r_id, $u_name, $r_name);
    // ID der Eintrittsnachricht merken und online-Datensatz schreiben
    $f['o_chat_id'] = $back;
    schreibe_db("online", $f, $o_id, "o_id");
    // Topic vorhanden? ausgeben
    if (strlen($r_topic) > 0) {
        system_msg("", 0, $u_id, "", "<BR><B>{$t['betrete_chat3']} {$r_name}:</B> {$r_topic}");
    }
    // Eintrittsnachricht
    if ($t['betrete_chat1']) {
        $txt = $t['betrete_chat1'] . " " . $r_name . ":";
    } else {
        unset($txt);
    }
    if ($raum_eintrittsnachricht_kurzform == "1") {
        unset($txt);
    }
    if ($raum_eintrittsnachricht_anzeige_deaktivieren == "1") {
    } else {
        if (strlen($r_eintritt) > 0) {
            system_msg("", 0, $u_id, "", "<BR><B>{$txt} {$r_eintritt}, {$u_name}!</B><BR>");
        } else {
            system_msg("", 0, $u_id, "", "<BR><B>{$txt}</B> {$t['betrete_chat2']}, {$u_name}!</B><BR>");
        }
    }
    // Wer ist alles im Raum?
    raum_user($r_id, $u_id, $hash_id);
    // Hat der User sein Profil ausgefüllt?
    if ($communityfeatures && $u_level != "G") {
        profil_neu($u_id, $u_name, $hash_id);
    }
    $http_te = "";
    if (isset($_SERVER['HTTP_TE'])) {
        $http_te = $_SERVER['HTTP_TE'];
    }
    // Optionale Warnungen ausgeben
    $browser = $_SERVER["HTTP_USER_AGENT"];
    if (!$javascript) {
        warnung($u_id, $u_nick, "ohne_js");
    } elseif ($u_backup || preg_match("/(.*)mozilla\\/[234](.*)mac(.*)/i", $browser) || preg_match("/(.*)msie(.*)mac(.*)/i", $browser) || preg_match("/(.*)Opera 3(.*)/i", $browser) || preg_match("/(.*)Opera\\/9(.*)/i", $browser) || preg_match("/(.*)Konqueror(.*)/i", $browser) || preg_match("/(.*)mozilla\\/5(.*)Netscape6(.*)/i", $browser) || preg_match("/(.*)mozilla\\/[23](.*)/i", $browser) || preg_match("/(.*)AOL [123](.*)/i", $browser) || $http_te == 'chunked') {
        $u_nick = "";
        warnung($u_id, $u_nick, "sicherer_modus");
    }
    // Hat der User Aktionen für den Login eingestellt, wie Nachricht bei neuer Mail oder Freunden an sich selbst?
    if ($communityfeatures && $u_level != "G") {
        aktion("Login", $u_id, $u_name, $hash_id);
    }
    // Nachrichten an Freude verschicken
    if ($communityfeatures) {
        $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) {
            while ($row = mysql_fetch_object($result)) {
                unset($f);
                $f['raum'] = $r_name;
                $f['aktion'] = "Login";
                $f['f_text'] = $row->f_text;
                if ($row->f_userid == $u_id) {
                    if (ist_online($row->f_freundid)) {
                        $wann = "Sofort/Online";
                        $an_u_id = $row->f_freundid;
                    } else {
                        $wann = "Sofort/Offline";
                        $an_u_id = $row->f_freundid;
                    }
                } else {
                    if (ist_online($row->f_userid)) {
                        $wann = "Sofort/Online";
                        $an_u_id = $row->f_userid;
                    } else {
                        $wann = "Sofort/Offline";
                        $an_u_id = $row->f_userid;
                    }
                }
                // Aktion ausführen
                aktion($wann, $an_u_id, $u_name, "", "Freunde", $f);
            }
        }
        @mysql_free_result($result);
    }
    return $back;
}