Example #1
0
     $result2 = mysql_query($query2, $conn);
     if ($result2 and mysql_num_rows($result2) > 0) {
         $raumname = mysql_result($result2, 0, 0);
     } else {
         $raumname = "";
     }
     mysql_free_result($result2);
     $query2 = "SELECT o_user FROM online WHERE (o_level='S' OR o_level='C')";
     $result2 = mysql_query($query2, $conn);
     if ($result2 and mysql_num_rows($result2) > 0) {
         $txt = str_replace("%raumname%", $raumname, $t['default7']);
         while ($row2 = mysql_fetch_object($result2)) {
             $ur1 = "user.php?http_host=<HTTP_HOST>&id=<ID>&aktion=zeig&user={$u_id}";
             $ah1 = "<A HREF=\"{$ur1}\" TARGET=\"{$u_nick}\" onclick=\"neuesFenster('{$ur1}','{$u_nick}'); return(false);\">";
             $ah2 = "</A>";
             system_msg("", 0, $row2->o_user, $system_farbe, str_replace("%u_nick%", $ah1 . $u_nick . $ah2, $txt));
         }
     }
     mysql_free_result($result2);
 }
 // Kopf ausgeben
 if ($layout_bodytag) {
     echo "<HTML>\n<HEAD><TITLE>{$body_titel}</TITLE><META CHARSET=UTF-8>\n" . $stylesheet . "\n" . $zusatztext_kopf . "\n</HEAD>\n";
 }
 if ($communityfeatures && $eintritt == "forum") {
     // Login ins Forum
     betrete_forum($o_id, $u_id, $u_nick, $u_level);
     // Frame-Einstellungen für Browser definieren
     $user_agent = strtolower($HTTP_USER_AGENT);
     if (preg_match("/linux/", $user_agent)) {
         $frame_type = "linux";
function raum_gehe($o_id, $u_id, $u_name, $raum_alt, $raum_neu, $geschlossen)
{
    // user $u_id/$u_name geht von $raum_alt in Raum $raum_neu
    // falls $geschlossen=TRUE -> auch geschlossene Räume betreten
    // Nachricht in Raum $r_id wird erzeugt
    // ID des neuen Raums wird zurückgeliefert
    global $dbase, $conn, $chat, $admin, $u_level, $u_punkte_gesamt, $farbe_chat_background2, $t, $beichtstuhl, $lobby, $timeout;
    global $http_host, $id, $erweitertefeatures, $forumfeatures, $communityfeatures;
    global $raum_eintrittsnachricht_anzeige_deaktivieren, $raum_austrittsnachricht_anzeige_deaktivieren;
    global $raum_eintrittsnachricht_kurzform, $raum_austrittsnachricht_kurzform;
    // Info zu altem Raum lesen
    $query = "SELECT r_name,r_status1,r_austritt,r_min_punkte from raum " . "WHERE r_id=" . intval($raum_alt);
    $result = mysql_query($query, $conn);
    if ($result && mysql_num_rows($result) == 1) {
        $alt = mysql_fetch_object($result);
        mysql_free_result($result);
    }
    // Ist User aus dem Raum ausgesperrt?
    $query = "SELECT s_id FROM sperre WHERE s_raum=" . intval($raum_neu) . " AND s_user={$u_id}";
    $result = @mysql_query($query, $conn);
    $rows = @mysql_Num_Rows($result);
    if ($rows == 0) {
        $gesperrt = 0;
    } else {
        $gesperrt = 1;
    }
    @mysql_free_result($result);
    // Info zu neuem Raum lesen
    $query = "SELECT * from raum WHERE r_id=" . intval($raum_neu);
    $result = mysql_query($query, $conn);
    if ($result && mysql_num_rows($result) == 1) {
        $neu = mysql_fetch_object($result);
        mysql_free_result($result);
        // Online Punkte Holen, damit der User zum Raumwechsel nicht ein/ausloggen muss
        $o_punkte = 0;
        if ($erweitertefeatures == 1) {
            $query2 = "SELECT o_punkte FROM online WHERE o_id=" . intval($o_id);
            $result2 = mysql_query($query2, $conn);
            if ($result2 && mysql_num_rows($result2) == 1) {
                $online = mysql_fetch_object($result2);
                mysql_free_result($result2);
                $o_punkte = $online->o_punkte;
                unset($online);
            }
            unset($query2);
            unset($result2);
        }
        // wenn hier nach Erweitertefeatures oder Punkte geprüft werden würde, was sinn machen würde,
        // kommen User aus Kostenlosen chats, die mit der MainChat Community verbunden sind, trotzdem in den Raum,
        // trotz zu wenigen Punkten
        if ($neu->r_name != $lobby && $neu->r_min_punkte > $u_punkte_gesamt + $o_punkte && !$admin && $u_level != "A") {
            $zuwenigpunkte = 1;
        } else {
            $zuwenigpunkte = 0;
        }
        $raumwechsel = false;
        // Prüfen ob Raum geschlossen oder Admin
        // Prüfen, ob Raumwechsel erlaubt...
        // Raumwechsel erlaubt wenn Raum nicht geschlossen und user nicht gesperrt.
        if ($neu->r_status1 == "G" || $neu->r_status1 == "M" || $zuwenigpunkte == 1) {
            // Raum geschlossen. nur rein, wenn auf invite liste.
            $query = "SELECT inv_user FROM invite WHERE inv_raum={$neu->r_id} AND inv_user={$u_id}";
            $result = mysql_query($query, $conn);
            if ($result > 0) {
                if (mysql_num_rows($result) > 0) {
                    $raumwechsel = true;
                }
                mysql_free_result($result);
            }
            // oder falls user=raumbesitzer...
            // macht wenig sinn, das ein RB in seinen Raum ein ! angeben muss
            //if ($neu->r_besitzer==$u_id && $geschlossen) $raumwechsel=true;
            if ($neu->r_besitzer == $u_id) {
                $raumwechsel = true;
            }
        } else {
            // Raum offen, nur rein, wenn nicht gesperrt.
            if ($gesperrt == 0 && $zuwenigpunkte == 0) {
                $raumwechsel = true;
            }
        }
        // raumwechsel nicht erlaubt, wenn alter Raum teergrube (ausser für Admins + Tempadmins)
        if ($alt->r_status1 == "L" && $u_level != "A" && !$admin) {
            $raumwechsel = false;
        }
        // für admin raumwechsel erlaubt.
        if ($admin && $geschlossen) {
            $raumwechsel = true;
        }
        // Falls Beichtstuhl-Modus und $geschlossen!=TRUE, Anzahl der User im Raum
        // ermitteln. Der Raum darf betreten werden, wenn:
        // 1) genau ein Admin im Raum ist und
        // 2) kein User im Raum ist oder
        // 3) Raum temporär ist oder
        // 4) der Raum Lobby ist oder
        // 5) der User ein Admin ist
        if ($raumwechsel && $beichtstuhl && !$admin) {
            $query = "SELECT r_id,count(o_id) as anzahl, " . "count(o_level='C') as CADMIN, count(o_level='S') as SADMIN, " . "r_name='{$lobby}' as LOBBY, r_status2='T' AS STATUS " . "FROM raum LEFT JOIN online ON o_raum=r_id " . "WHERE ((UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout} " . "OR r_name='Lobby' OR r_status2='T') " . "AND r_id=" . intval($raum_neu) . " " . "GROUP BY r_id HAVING anzahl=1 AND (CADMIN=1 OR SADMIN=1) OR LOBBY OR STATUS";
            // system_msg("",0,$u_id,"","DEBUG $query");
            $result = mysql_query($query, $conn);
            if ($result && mysql_num_rows($result) == 1) {
                $raumwechsel = TRUE;
            } else {
                $raumwechsel = FALSE;
            }
            @mysql_free_result($result);
        }
        // Darf Raum nun betreten werden?
        if ($raumwechsel) {
            // Raum verlassen
            $back = nachricht_verlasse($raum_alt, $u_name, $alt->r_name);
            // back in DB merken
            $f['o_chat_id'] = $back;
            schreibe_db("online", $f, $o_id, "o_id");
            // Neuen Raum eintragen
            $query = "UPDATE online SET o_raum=" . intval($raum_neu) . " WHERE o_user={$u_id} AND o_raum=" . intval($raum_alt);
            $result = mysql_query($query, $conn);
            // Austrittstext
            if ($t['raum_gehe1']) {
                $txt = $t['raum_gehe1'] . " " . $alt->r_name . ":";
            } else {
                unset($txt);
            }
            if ($raum_austrittsnachricht_kurzform == "1") {
                unset($txt);
            }
            if (strlen($alt->r_austritt) > 0) {
                $txt = "<B>{$txt}</B> {$alt->r_austritt}<BR>";
            } else {
                unset($txt);
            }
            if ($raum_austrittsnachricht_anzeige_deaktivieren == "1") {
                unset($txt);
            }
            if (!isset($txt)) {
                $txt = "";
            }
            // Trenner zwischen den Räumen, Austrittstext
            system_msg("", 0, $u_id, "", " ");
            system_msg("", 0, $u_id, "", $txt . "<BR><TABLE WIDTH=100% BGCOLOR=\"{$farbe_chat_background2}\" BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD>" . "<IMG SRC=\"pics/fuell.gif\" ALT=\"\" WIDTH=4 HEIGHT=4><BR></TD></TR></TABLE>\n");
            // Raum betreten
            nachricht_betrete($u_id, $raum_neu, $u_name, $neu->r_name);
            // Wenn der Neue Raum eine Teergrube ist, dann Eingabzeile aktualisieren, daß der [FORUM] Link verschwindet
            // Es sei denn man ist Admin, dann braucht es nicht aktualisiert werden, denn der Link wird nicht ausgeblendet
            // bzw. wenn alter Raum Teergrube war, dann auch aktualisieren
            // $u_id über Online Tabelle, da der User auch geschubst werden kann, deswegen dessen o_vhost und o_hash
            if ($forumfeatures && $communityfeatures && !$beichtstuhl && ($neu->r_status1 == "L" || $alt->r_status1 == "L") && $u_level != "A" && !$admin) {
                $query2 = "SELECT o_hash, o_vhost FROM online WHERE o_id=" . intval($o_id);
                $result2 = mysql_query($query2, $conn);
                if ($result2 && mysql_num_rows($result2) == 1) {
                    $online = mysql_fetch_object($result2);
                    mysql_free_result($result2);
                    system_msg("", 0, $u_id, "", "<SCRIPT>parent.frames[3].location.href='eingabe.php?http_host={$online->o_vhost}&id={$online->o_hash}';</SCRIPT>");
                    unset($online);
                }
                unset($query2);
                unset($result2);
            }
            // Nachricht falls gesperrt ausgeben
            if ($gesperrt || $zuwenigpunkte) {
                system_msg("", 0, $u_id, "", str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe2']));
            }
            // Topic vorhanden? ausgeben
            if ($t['raum_gehe6']) {
                $txt = $t['raum_gehe6'] . " " . $neu->r_name . ":";
            } else {
                unset($txt);
            }
            if (strlen($neu->r_topic) > 0) {
                system_msg("", 0, $u_id, "", "<BR><B>{$txt}</B> {$neu->r_topic}");
            }
            // Eintrittsnachricht
            if ($t['raum_gehe3']) {
                $txt = $t['raum_gehe3'] . " " . $neu->r_name . ":";
            } else {
                unset($txt);
            }
            if ($raum_eintrittsnachricht_kurzform == "1") {
                unset($txt);
            }
            if ($raum_eintrittsnachricht_anzeige_deaktivieren == "1") {
            } else {
                if (strlen($neu->r_eintritt) > 0) {
                    system_msg("", 0, $u_id, "", "<BR><B>{$txt} {$neu->r_eintritt}, {$u_name}!</B><BR>");
                } else {
                    system_msg("", 0, $u_id, "", "<BR><B>{$txt}</B> {$t['betrete_chat2']}, {$u_name}!</B><BR>");
                }
            }
            $raum = $raum_neu;
        } else {
            // Raum kann nicht betreten werden
            system_msg("", 0, $u_id, "", str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe4']));
            // Nachricht das gesperrt ausgeben
            if ($gesperrt) {
                system_msg("", 0, $u_id, "", str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe5']));
            }
            // Nachricht das zu wenige Punkte ausgeben
            if ($zuwenigpunkte) {
                if ($u_level == "G") {
                    $fehler = str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe8']);
                } else {
                    $fehler = str_replace("%r_name_neu%", $neu->r_name, $t['raum_gehe7']);
                }
                $fehler = str_replace("%r_min_punkte%", $neu->r_min_punkte, $fehler);
                system_msg("", 0, $u_id, "", $fehler);
                unset($fehler);
            }
            $raum = $raum_alt;
        }
    }
    return $raum;
}
Example #3
0
 if ($result2 and mysql_num_rows($result2) > 0) {
     $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";
 }
Example #4
0
             $fehler = TRUE;
         }
     }
     @mysql_free_result($result);
 } elseif (isset($text) && strlen($text) >= $chat_max_eingabe) {
     $fehler = TRUE;
 }
 // Falls kein Spam, Nachricht ausgeben
 if (!$fehler) {
     if (strlen($u_farbe) == 0) {
         $u_farbe = $user_farbe;
     }
     chat_msg($o_id, $u_id, $u_nick, $u_farbe, $admin, $o_raum, isset($text) ? $text : "", "");
 } elseif ($fehler) {
     // Systemnachricht mit Fehlermeldung an User schreiben
     system_msg("", 0, $u_id, $system_farbe, $t['floodsperre1'] . " " . $text);
     // Zur Strafe 10 Punkte abziehen
     if ($communityfeatures && $punktefeatures) {
         $anzahl = 10;
         punkte(-1 * $anzahl, $o_id, $u_id, $t['floodsperre2'], TRUE);
     }
 }
 // Kopf ausgeben
 echo "<HTML><HEAD></HEAD>" . $body_tag;
 // Timestamp im Datensatz aktualisieren
 aktualisiere_online($u_id, $o_raum);
 // Falls Pull-Chat, chat-Fenster neu laden (sicherer Modus), falls User im Chat
 if ($o_who != 2 && ($backup_chat || $u_backup)) {
     echo "<SCRIPT LANGUAGE=JavaScript>\n" . "parent.chat.location.href='chat.php?http_host={$http_host}&id={$id}'" . "</SCRIPT>\n";
 }
 // falls Moderator, moderationsfenster nach Eingabe neu laden, falls User im Chat
Example #5
0
         $o_raum = $row->o_raum;
         $ignore = unserialize($row->o_ignore);
     } else {
         // Raus aus dem Chat, vorher kurz warten
         sleep(10);
         $beende_prozess = TRUE;
     }
     mysql_free_result($result);
 }
 $j++;
 $i++;
 // Falls nach mehr als 100 sek. keine Ausgabe erfolgt, Userliste anzeigen
 // Nach > 120 Sekunden schlagen bei einigen Browsern Timeouts zu ;)
 if ($i > $zeige_userliste) {
     if (isset($raum_msg) && $raum_msg != "AUS") {
         system_msg("", 0, $u_id, $system_farbe, $raum_msg);
     } else {
         raum_user($o_raum, $u_id, "");
     }
     $i = 0;
 }
 // Raumwechsel?
 if ($back == 0 && $o_raum != $o_raum_alt) {
     // Trigger für die letzten Nachrichten setzen
     $back = 1;
 }
 // Chatausgabe, $letzte_id ist global
 // Falls Result=wahr wurde Text ausgegeben, Timer für Userliste zurücksetzen
 if (chat_lese($o_id, $o_raum, $u_id, $sysmsg, $ignore, $back)) {
     $i = 0;
 }
Example #6
0
}
$body_tag = $body_tag . "TEXT=\"{$farbe_chat_text3}\" " . "LINK=\"{$farbe_chat_link3}\" " . "VLINK=\"{$farbe_chat_vlink3}\" " . "ALINK=\"{$farbe_chat_vlink3}\">\n";
// Prüfung, ob User wegen Inaktivität ausgelogt werden soll
if ($u_id && $chat_timeout && $u_level != 'S' && $u_level != 'C' && $u_level != 'M' && $o_timeout_zeit) {
    if ($o_timeout_warnung == "J" && $chat_timeout < time() - $o_timeout_zeit) {
        // User ausloggen
        $zusatzjavascript = "<SCRIPT>\n" . "window.open(\"hilfe.php?http_host={$http_host}&id={$id}&aktion=logout\",'Logout',\"resizable=yes,scrollbars=yes,width=300,height=300\")\n" . "</SCRIPT>\n";
        require_once "functions.php-func-verlasse_chat.php";
        require_once "functions.php-func-nachricht.php";
        verlasse_chat($u_id, $u_nick, $o_raum);
        logout($o_id, $u_id, "forum->logout");
        unset($u_id);
        unset($o_id);
    } elseif ($o_timeout_warnung != "J" && $chat_timeout / 4 * 3 < time() - $o_timeout_zeit) {
        // Warnung über bevorstehenden Logout ausgeben
        system_msg("", 0, $u_id, $system_farbe, str_replace("%zeit%", $chat_timeout / 60, $t['chat_msg101']));
        unset($f);
        $f[o_timeout_warnung] = "J";
        schreibe_db("online", $f, $o_id, "o_id");
    }
} else {
    $zusatzjavascript = "";
}
if ($u_id) {
    // Kopf ausgeben
    // Fenstername
    $fenster = str_replace("+", "", $u_nick);
    $fenster = str_replace("-", "", $fenster);
    $fenster = str_replace("ä", "", $fenster);
    $fenster = str_replace("ö", "", $fenster);
    $fenster = str_replace("ü", "", $fenster);
Example #7
0
function auto_knebel($text)
{
    global $admin;
    global $akdbase;
    global $dbase;
    global $u_id;
    global $u_nick;
    global $o_raum;
    global $t;
    global $ak;
    global $ak2;
    global $system_farbe;
    global $conn;
    global $knebelzeit;
    global $erweitertefeatures;
    // Prüfen ob private Nachricht
    $chatzeile = preg_split("/ /", $text, 2);
    $chatzeile[0] = strtolower($chatzeile[0]);
    if ($chatzeile[0] == '/msg' or $chatzeile[0] == '/talk' or $chatzeile[0] == '/tell' or $chatzeile[0] == '/msgpriv' or $chatzeile[0] == '/t') {
        $privatnachricht = true;
    } else {
        $privatnachricht = false;
    }
    unset($chatzeile);
    if (!$knebelzeit) {
        $knebelzeit = 5;
    }
    // für temp-admins gibts nun auch keinen autoknebel mehr
    $query = "SELECT o_level FROM online WHERE o_user = '******'";
    $result = mysql_query($query);
    $a = mysql_fetch_array($result);
    if ($a['o_level'] == "A" || $a['o_level'] == "S" || $a['o_level'] == "C" || $a['o_level'] == "M") {
        $admin2 = true;
    } else {
        $admin2 = false;
    }
    # system_msg("",0,$u_id,$system_farbe,"$admin2 , $akdbase, $dbase, $erweitertefeatures");
    // testen auf autoknebel...
    // if (!$admin2 && ($akdbase==$dbase || $erweitertefeatures)) {  nein, so nicht (fido)
    // alt: if (!$admin2 && ($akdbase==$dbase)) {
    if ($akdbase != $dbase) {
        $ak = "";
    }
    if (!$admin2) {
        if ($ak2) {
            $ak2 = str_replace("//", "", $ak2);
            $ak2 = explode("#", $ak2);
            $ak = array_merge($ak, $ak2);
        }
        for ($i = 0; $i < count($ak); $i++) {
            // Text in Kleinschrift gegen verbotene Text prüfen
            $testtext = strtolower($text);
            #$testtext=strip_tags($testtext);
            $testtext = str_replace("*", "", $testtext);
            $testtext = str_replace("_", "", $testtext);
            #$testtext=str_replace(".","\.",$testtext);
            if (isset($ak[$i]) && $ak[$i]) {
                if (preg_match($ak[$i], $testtext, $treffer)) {
                    system_msg("", 0, $u_id, $system_farbe, $t['knebel7']);
                    // Hole aktuelle Knebelendzeit und geplante neue
                    $query = "select o_knebel, FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())+" . intval($knebelzeit) . "*60) as knebelneu " . "from online where o_user={$u_id}";
                    $result = mysql_query($query, $conn);
                    $row = mysql_fetch_array($result);
                    // system_msg("",0,$u_id,$system_farbe,"DEBUG: $row[o_knebel] ... $row[knebelneu] ");
                    // Nur wenn neue Zeit größer als alte, dann erneut knebeln
                    if ($row[o_knebel] <= $row[knebelneu]) {
                        $query = "update online set o_knebel=FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())+" . intval($knebelzeit) . "*60) " . "where o_user={$u_id}";
                        $result = mysql_query($query, $conn);
                    }
                    // admins benachrichtigen, immer, auch wenn schon geknebelt gewesen
                    $query = "SELECT r_name FROM raum WHERE r_id={$o_raum}";
                    $result = mysql_query($query, $conn);
                    $r_name = mysql_result($result, 0, "r_name");
                    $query = "SELECT o_level,o_name,o_user,r_name FROM online,raum WHERE (o_level='S' OR o_level='C') AND r_id=o_raum ";
                    $result = mysql_query($query, $conn);
                    if ($result > 0) {
                        if (mysql_num_rows($result) > 0) {
                            while ($row = mysql_fetch_array($result)) {
                                $txt = str_replace("%user%", user($u_id, 0, TRUE, FALSE, "", "", "", FALSE), $t['knebel8']);
                                $txt = str_replace("%raum%", $r_name, $txt);
                                system_msg("", 0, $row['o_user'], $system_farbe, $txt);
                                if (!$privatnachricht) {
                                    system_msg("", 0, $row['o_user'], $system_farbe, $t['knebel9'] . " " . htmlspecialchars($text));
                                } else {
                                    system_msg("", 0, $row['o_user'], $system_farbe, $t['knebel10'] . " " . htmlspecialchars($treffer[0]));
                                }
                            }
                        }
                    }
                    $text = "";
                }
            }
        }
    }
    return $text;
}
function betrete_forum($o_id, $u_id, $u_name, $u_level)
{
    // User betritt beim Login das Forum
    global $dbase, $conn, $chat, $lobby, $eintrittsraum, $t, $hash_id, $communityfeatures, $beichtstuhl, $system_farbe;
    //Daten in onlinetabelle schreiben
    $f['o_raum'] = -1;
    $f['o_who'] = "2";
    //user betritt nicht chat, sondern direkt forum --> $back ist die aktuellste Zeile in chat
    $f['o_chat_id'] = system_msg("", 0, $u_id, "", str_replace("%u_nick%", $u_name, $t['betrete_forum1']));
    schreibe_db("online", $f, $o_id, "o_id");
    // 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'] = "";
                $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);
}
function gehe_forum($u_id, $u_nick, $o_id, $o_raum)
{
    global $conn, $t;
    //Austrittstext im alten raum erzeugen
    verlasse_chat($u_id, $u_nick, $o_raum);
    system_msg("", 0, $u_id, "", str_replace("%u_nick%", $u_nick, $t['betrete_forum1']));
    //Daten in online-tabelle richten
    $f['o_raum'] = -1;
    //-1 allgemein fuer community
    $f['o_who'] = "2";
    //2 -> Forum
    schreibe_db("online", $f, $o_id, "o_id");
}
function sms_msg($von_user, $von_user_id, $an_user, $farbe, $text, $userdata = "")
{
    // Schreibt privaten Text von $von_user an User $an_user
    // Art:           N: Normal
    //                S: Systemnachricht
    //                P: Privatnachticht
    //                H: Versteckte Nachricht
    global $conn, $chat, $http_host, $u_punkte_gesamt, $sms;
    unset($fehler);
    $smszulang = false;
    $emp = user($von_user_id, $userdata, FALSE, FALSE, "&nbsp;", "", "", FALSE, TRUE);
    $absender = $emp . "@" . $chat . ": ";
    // Wir basteln uns den Absender der SMS
    if (160 - strlen($text) - strlen($absender) < 0) {
        $smszulang = true;
    }
    $text = substr($text, 0, 160 - strlen($absender));
    // Text um Absender kürzen
    $text = preg_replace("/[\\\\" . chr(1) . "-" . chr(31) . "]/", "", $text);
    // Ungültige Zeichen filtern
    $complete = $absender . $text;
    // Prüfen ob genug Punkte
    #if ($u_punkte_gesamt < $sms[punkte]) { $fehler = "Um SMS verschicken zu dürfen brauchst Du mehr als $sms[punkte] Punkte.";}
    // Prüfen ob noch genug SMS-Guthaben da
    $guthaben = hole_smsguthaben($von_user_id);
    if (!isset($fehler)) {
        if ($guthaben <= 0) {
            $fehler = "Du hast kein SMS-Guthaben mehr!";
        }
    }
    // Prüfen ob User SMS möchte
    $query = "SELECT u_sms_ok FROM user WHERE u_id = " . intval($an_user);
    $result = mysql_query($query);
    $a = mysql_fetch_array($result);
    mysql_free_result($result);
    $sms_ok = $a['u_sms_ok'];
    if (!isset($fehler)) {
        if ($sms_ok == "N") {
            $fehler = "Dieser User möchte keine SMS empfangen.";
        }
    }
    // Prüfen auf gültige Handynummer des Empfängers
    $handynr = hole_handynummer($an_user);
    if (!isset($fehler)) {
        if (!pruefe_handynummer($handynr)) {
            $fehler = "Dieser User hat leider keine gültige Handynummer eingetragen.";
        }
    }
    if (isset($fehler)) {
        system_msg("", 0, $von_user_id, $u_farbe, "<b>Fehler:</b> Die SMS konnte nicht verschickt werden. {$fehler}");
    } else {
        $query = "SELECT u_nick FROM user WHERE u_id = " . intval($an_user);
        $result = mysql_query($query);
        $emp2 = mysql_fetch_array($result);
        sms_sende($von_user_id, $an_user, $complete);
        $txt = "<B>{$chat}:</B> sende SMS an {$emp2['u_nick']}: '{$text}'";
        if ($smszulang) {
            system_msg("", 0, $von_user_id, $system_farbe, "<B>Hinweis:</B> Die eingegebene SMS war zu lang. Sie wurde auf 160 Zeichen gekürzt!");
        }
        system_msg("", 0, $von_user_id, $system_farbe, $txt);
    }
    // In Session Timeout-Zeit auf jetzt setzen
    if ($von_user_id) {
        $query = "UPDATE online SET o_timeout_zeit=DATE_FORMAT(NOW(),\"%Y%m%d%H%i%s\"), o_timeout_warnung='N' " . "WHERE o_user=" . intval($von_user_id);
        $result = mysql_query($query, $conn);
    }
    return $back;
}
Example #11
0
function warnung($u_id, $u_nick, $art)
{
    // Gibt eine Warnung im Chat an den User $u_id/$u_nick aus
    global $t, $system_farbe, $warnmeldung_sicherermodus_deaktivieren;
    $user = "";
    if ($u_nick) {
        $user = "******" . $u_nick;
    }
    switch ($art) {
        case "sicherer_modus":
            if (!$warnmeldung_sicherermodus_deaktivieren == "1") {
                $text = str_replace("%user%", $user, str_replace("%text%", $t['warnung2'], $t['warnung1']));
            }
            break;
        case "ohne_js":
            $text = str_replace("%user%", $user, str_replace("%text%", $t['warnung3'], $t['warnung1']));
            break;
        default:
            $text = str_replace("%user%", $user, $t['warnung1']);
    }
    if ($u_id) {
        system_msg("", 0, $u_id, $system_farbe, $text);
    }
}
function postings_neu($an_u_id, $u_nick, $id, $nachricht)
{
    global $conn, $t, $system_farbe;
    //schon gelesene Postings des Users holen
    $sql = "select u_gelesene_postings from user where u_id = " . intval($an_u_id);
    $query = mysql_query($sql, $conn);
    if (mysql_num_rows($query) > 0) {
        $gelesene = mysql_result($query, 0, "u_gelesene_postings");
    }
    $u_gelesene = unserialize($gelesene);
    @mysql_free_result($query);
    //alle eigenen Postings des Users mit allen Antworten
    //und dem Threadbaum holen
    //die RegExp matcht auf die Posting-ID im Feld Threadorder
    //entweder mit vorher und nachher keiner Zahl (damit z.B. 32
    //in 131,132,133 nicht matcht) oder am Anfang oder Ende
    //	$sql = "select a.po_id as po_id_own, a.po_th_id as po_th_id,
    //		a.po_titel as po_titel_own,
    //		date_format(from_unixtime(a.po_ts), '%d.%m.%Y %H:%i') as po_date_own,
    //		th_name, fo_name,
    //		b.po_id as po_id_reply, b.po_u_id as po_u_id_reply,
    //		b.po_titel as po_titel_reply,
    //		date_format(from_unixtime(b.po_ts), '%d.%m.%Y %H:%i') as po_date_reply,
    //		u_nick,
    //		c.po_threadorder as threadord, c.po_id as po_id_thread
    //		from posting a, posting b, thema, forum, user
    //		left join posting c on c.po_threadorder REGEXP concat(\"(^|[^0-9])\",a.po_id,\"($|[^0-9])\")
    //		where a.po_u_id = $an_u_id
    //		and a.po_id = b.po_vater_id
    //		and a.po_th_id = th_id
    //		and fo_id=th_fo_id
    //		and b.po_u_id = u_id
    //		and a.po_u_id <> b.po_u_id";
    // Vereinfachter Query ohne Left join, ist nun viel viel schneller. Fehlende Felder werden über zwei weitere Queries gesucht.
    $sql = "\n\t\tselect a.po_id as po_id_own, a.po_th_id as po_th_id,\n\t\ta.po_titel as po_titel_own,\n\t\tdate_format(from_unixtime(a.po_ts), '%d.%m.%Y %H:%i') as po_date_own,\n\t\tth_name, fo_name,\n\t\tb.po_id as po_id_reply, b.po_u_id as po_u_id_reply,\n\t\tb.po_titel as po_titel_reply,\n\t\tdate_format(from_unixtime(b.po_ts), '%d.%m.%Y %H:%i') as po_date_reply,\n\t\tu_nick, a.po_threadorder as threadord, a.po_id as po_id_thread\n\t\tfrom posting a, posting b, thema, forum, user \n\t\twhere a.po_u_id = " . intval($an_u_id) . "\n\t\tand a.po_id = b.po_vater_id \n\t\tand a.po_th_id = th_id \n\t\tand fo_id=th_fo_id \n\t\tand b.po_u_id = u_id \n\t\tand a.po_u_id <> b.po_u_id\n\t\t";
    $query = mysql_query($sql, $conn);
    while ($postings = mysql_fetch_array($query, MYSQL_ASSOC)) {
        //falls posting noch nicht gelesen ist es neu
        if (is_array($u_gelesene[$postings['po_th_id']])) {
            if (!in_array($postings['po_id_reply'], $u_gelesene[$postings['po_th_id']])) {
                $poid = $postings['po_id_own'];
                $postings['po_id_thread'] = suche_vaterposting($poid);
                $postings['threadord'] = suche_threadord($postings['po_id_thread']);
                //Nachricht versenden
                switch ($nachricht) {
                    case "OLM":
                        $text = str_replace("%po_titel%", $postings['po_titel_own'], $t['msg_new_posting_olm']);
                        $text = str_replace("%po_ts%", $postings['po_date_own'], $text);
                        $text = str_replace("%forum%", $postings['fo_name'], $text);
                        $text = str_replace("%thema%", $postings['th_name'], $text);
                        $text = str_replace("%user_from_nick%", $postings['u_nick'], $text);
                        $text = str_replace("%po_titel_antwort%", $postings['po_titel_reply'], $text);
                        $text = str_replace("%po_ts_antwort%", $postings['po_date_reply'], $text);
                        system_msg("", 0, $an_u_id, $system_farbe, $text);
                        break;
                    case "Chat-Mail":
                        if ($postings['threadord']) {
                            $baum = erzeuge_baum($postings['threadord'], $postings['po_id_own'], $postings['po_id_thread']);
                        } else {
                            $baum = $postings['po_titel_own'] . " -> " . $postings['po_titel_reply'];
                        }
                        $betreff = str_replace("%po_titel%", $postings['po_titel_own'], $t['betreff_new_posting']);
                        $text = str_replace("%po_titel%", $postings['po_titel_own'], $t['msg_new_posting_chatmail']);
                        $text = str_replace("%po_ts%", $postings['po_date_own'], $text);
                        $text = str_replace("%forum%", $postings['fo_name'], $text);
                        $text = str_replace("%thema%", $postings['th_name'], $text);
                        $text = str_replace("%user_from_nick%", $postings['u_nick'], $text);
                        $text = str_replace("%po_titel_antwort%", $postings['po_titel_reply'], $text);
                        $text = str_replace("%po_ts_antwort%", $postings['po_date_reply'], $text);
                        $text = str_replace("%baum%", $baum, $text);
                        mail_sende($postings['po_u_id_reply'], $an_u_id, $text, $betreff);
                        break;
                    case "E-Mail":
                        if ($postings['threadord']) {
                            $baum = erzeuge_baum($postings['threadord'], $postings['po_id_own'], $postings['po_id_thread']);
                        } else {
                            $baum = $postings['po_titel_own'] . " -> " . $postings['po_titel_reply'];
                        }
                        $betreff = str_replace("%po_titel%", $postings['po_titel_own'], $t['betreff_new_posting']);
                        $text = str_replace("%po_titel%", $postings['po_titel_own'], $t['msg_new_posting_email']);
                        $text = str_replace("%po_ts%", $postings['po_date_own'], $text);
                        $text = str_replace("%forum%", $postings['fo_name'], $text);
                        $text = str_replace("%thema%", $postings['th_name'], $text);
                        $text = str_replace("%user_from_nick%", $postings['u_nick'], $text);
                        $text = str_replace("%po_titel_antwort%", $postings['po_titel_reply'], $text);
                        $text = str_replace("%po_ts_antwort%", $postings['po_date_reply'], $text);
                        $text = str_replace("%baum%", $baum, $text);
                        email_versende($postings['po_u_id_reply'], $an_u_id, $text, $betreff);
                        break;
                    case "SMS":
                        $text = str_replace("%po_titel%", $postings['po_titel_own'], $t['msg_new_posting_sms']);
                        $text = str_replace("%po_ts%", $postings['po_date_own'], $text);
                        $text = str_replace("%forum%", $postings['fo_name'], $text);
                        $text = str_replace("%thema%", $postings['th_name'], $text);
                        sms_sende($an_u_id, $an_u_id, $text);
                        break;
                }
            }
        }
        // endif is_array
    }
    @mysql_free_result($query);
}
Example #13
0
<?php

// eingabe.php muss mit id=$hash_id aufgerufen werden
require "functions.php";
// Vergleicht Hash-Wert mit IP und liefert u_id, u_name, o_id, o_raum, o_js
id_lese($id);
if ($u_id) {
    // Ggf Farbe aktualisieren
    if (isset($farbe)) {
        if (strlen($farbe) == 6) {
            if (preg_match("/[a-f0-9]{6}/i", $farbe)) {
                $u_farbe = $farbe;
                $f['u_farbe'] = substr(htmlspecialchars($farbe), 0, 6);
                schreibe_db("user", $f, $u_id, "u_id");
                system_msg("", 0, $u_id, $system_farbe, "<B>{$chat}:</B> " . "<FONT COLOR=\"#{$u_farbe}\">" . str_replace("%u_nick%", $u_nick, $t['farbe1']) . "</FONT>");
            }
        }
    }
    // Default für Farbe setzen, falls undefiniert
    if (!isset($u_farbe)) {
        $u_farbe = $user_farbe;
    }
    // Fenstername
    $fenster = str_replace("+", "", $u_nick);
    $fenster = str_replace("-", "", $fenster);
    $fenster = str_replace("ä", "", $fenster);
    $fenster = str_replace("ö", "", $fenster);
    $fenster = str_replace("ü", "", $fenster);
    $fenster = str_replace("Ä", "", $fenster);
    $fenster = str_replace("Ö", "", $fenster);
    $fenster = str_replace("Ü", "", $fenster);
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("/(&amp;[^ ]+)/", $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("&amp;", "&", $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("&amp;", "&", $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'] . "&nbsp;" . $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;
}
function bearbeite_moderationstexte($o_raum)
{
    global $t;
    global $id;
    global $dbase, $conn;
    global $action;
    global $u_id;
    global $system_farbe;
    if (is_array($action)) {
        echo "<font><small>";
        $a = 0;
        reset($action);
        // erst mal die Datensätze reservieren...
        while ($a < count($action)) {
            $key = key($action);
            // nur markieren, was noch frei ist.
            $query = "UPDATE moderation SET c_moderator={$u_id} WHERE c_id=" . intval($key) . " AND c_typ='N' AND c_moderator=0";
            $result = mysql_query($query, $conn);
            next($action);
            $a++;
        }
        // jetzt die reservierten Aktionen bearbeiten.
        $a = 0;
        reset($action);
        while ($a < count($action)) {
            $key = key($action);
            // nur auswählen, was bereits von diesem Moderator reserviert ist
            $query = "SELECT * FROM moderation WHERE c_id=" . intval($key) . " AND c_typ='N' AND c_moderator={$u_id}";
            $result = mysql_query($query, $conn);
            if ($result > 0) {
                if (mysql_num_rows($result) > 0) {
                    $f = mysql_fetch_array($result);
                    switch ($action[$key]) {
                        case "ok":
                        case "clear":
                        case "thru":
                            // vorbereiten für umspeichern... geht leider nicht 1:1,
                            // weil fetch_array mehr zurückliefert als in $f[] sein darf...
                            $c['c_von_user'] = $f['c_von_user'];
                            $c['c_an_user'] = $f['c_an_user'];
                            $c['c_typ'] = $f['c_typ'];
                            $c['c_raum'] = $f['c_raum'];
                            $c['c_text'] = $f['c_text'];
                            $c['c_farbe'] = $f['c_farbe'];
                            $c['c_zeit'] = $f['c_zeit'];
                            $c['c_von_user_id'] = $f['c_von_user_id'];
                            if ($action[$key] == "ok") {
                                // eigene ID vermerken
                                $c['c_moderator'] = $u_id;
                                // Zeit löschen, damit markierte oben erscheint...
                                unset($c['c_zeit']);
                            } else {
                                // freigeben -> id=0 schreiben
                                $c['c_moderator'] = 0;
                            }
                            // und in moderations-tabelle schreiben
                            if ($action[$key] == "thru") {
                                unset($c['c_moderator']);
                                schreibe_chat($c);
                            } else {
                                schreibe_moderiert($c);
                            }
                            break;
                        case "notagain":
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, $t['moderiertdel1']);
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, "&gt;&gt;&gt; " . $f['c_text']);
                            break;
                        case "better":
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, $t['moderiertdel2']);
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, "&gt;&gt;&gt; " . $f['c_text']);
                            break;
                        case "notime":
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, $t['moderiertdel3']);
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, "&gt;&gt;&gt; " . $f['c_text']);
                            break;
                        case "delete":
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, $t['moderiertdel4']);
                            system_msg("", 0, $f['c_von_user_id'], $system_farbe, "&gt;&gt;&gt; " . $f['c_text']);
                            break;
                    }
                    // jetzt noch aus moderierter Tabelle löschen.
                    mysql_free_result($result);
                    $query = "DELETE FROM moderation WHERE c_id=" . intval($key) . " AND c_moderator={$u_id}";
                    $result2 = mysql_query($query, $conn);
                } else {
                    echo "{$t['mod9']}<br>";
                }
            }
            next($action);
            $a++;
        }
        echo "</small></font>";
    }
}
Example #16
0
 // ID gesetzt?
 if (strlen($is_id) > 0) {
     $query = "SELECT is_infotext,is_domain,is_ip FROM ip_sperre " . "WHERE is_id=" . intval($is_id);
     $result = mysql_query($query);
     $rows = mysql_Num_Rows($result);
     if ($rows == 1) {
         // Zeile lese
         $row = mysql_fetch_object($result);
         $box = $ft0 . $t['sonst17'] . " " . $row->is_domain . $row->is_ip . $ft1;
         echo "<TABLE CELLPADDING=2 CELLSPACING=0 BORDER=0 WIDTH=100% BGCOLOR={$farbe_tabelle_kopf}>\n";
         echo "<TR><TD>";
         echo "<A HREF=\"javascript:window.close();\">" . "<IMG SRC=\"pics/button-x.gif\" ALT=\"schließen\" " . "WIDTH=15 HEIGHT=13 ALIGN=\"RIGHT\" BORDER=0></A>\n";
         echo "<FONT SIZE=-1 COLOR={$farbe_text}><B>{$box}</B></FONT>\n";
         echo "</TD></TR></TABLE>\n<PRE>" . $f1;
         if (!file_exists($traceroute)) {
             system_msg("", 0, $u_id, $system_farbe, "<b>config anpassen \$traceroute</b>");
         }
         if (strlen($row->is_domain) > 0) {
             system("{$traceroute} {$row->is_domain}", $ergebnis);
         } else {
             system("{$traceroute} {$row->is_ip}", $ergebnis);
         }
         echo $f2 . "</PRE>\n";
     } else {
         echo "<P>{$t['sonst9']}</P>\n";
     }
     mysql_free_result($result);
 }
 echo "<IMG SRC=\"pics/fuell.gif\" ALT=\"\" WIDTH=4 HEIGHT=4><BR>\n";
 liste();
 break;
function nachricht_verlasse($r_id, $u_name, $r_name)
{
    // Eintrittsnachricht in Raum schreiben
    // Aufruf mit Raum-Id, UserName, Raum-Name
    // liefert $back (ID des geschriebenen Datensatzes) zurück
    global $chat, $nachricht_v, $lustigefeatures, $u_farbe, $u_id;
    global $eintritt_individuell, $eintritt_useranzeige;
    // Nachricht Standard
    $text = $nachricht_v[0];
    // Nachricht Lustiege ein/austrittsnachrichten
    if ($lustigefeatures) {
        reset($nachricht_v);
        $anzahl = count($nachricht_v);
        $text = $nachricht_v[mt_rand(1, $anzahl) - 1];
    }
    // Nachricht auswählen
    if ($eintritt_individuell == "1") {
        $query = "SELECT u_austritt FROM user where u_nick = '" . mysql_real_escape_string($u_name) . "'";
        $result = mysql_query($query);
        $row = mysql_fetch_object($result);
        if (strlen($row->u_austritt) > 0) {
            $text = $row->u_austritt;
            if ($eintritt_useranzeige == "1") {
                $text = htmlspecialchars($text) . "  <b>({$u_name})</b> ";
            } else {
                $text = htmlspecialchars($text) . " <!-- <b>({$u_name})</b> -->";
            }
        }
        mysql_free_result($result);
    }
    $text = str_replace("%u_name%", $u_name, $text);
    $text = str_replace("%r_name%", $r_name, $text);
    $text = preg_replace("|%nick%|i", $u_name, $text);
    $text = preg_replace("|%raum%|i", $r_name, $text);
    if (strlen($text) == 0) {
        $text = $u_name;
    }
    // Nachricht im Chat ausgeben; falls Raum moderiert ist, nur HTML-Kommentar ausgeben
    if (raum_ist_moderiert($r_id)) {
        $back = system_msg("", 0, $u_id, $u_farbe, "<b>&lt;&lt;&lt;</b> " . $text);
    } else {
        $back = global_msg($u_id, $r_id, "<b>&lt;&lt;&lt;</b> " . $text);
    }
    return $back;
}