} function window_reload(file,win_name) { win_name.location.href=file; } </SCRIPT> <?php 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); } // Menue Ausgeben: echo "<FORM ACTION=\"" . $chat_url . "index.php\" TARGET=\"topframe\" NAME=\"form1\" METHOD=\"POST\">\n" . "<CENTER><TABLE BORDER=0 CELLSPACING=3 CELLPADDING=0>\n"; // Anzahl der User insgesamt feststellen $query = "SELECT count(o_id) as anzahl FROM online " . "WHERE (UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(o_aktiv)) <= {$timeout}"; $result = mysql_query($query, $conn); if ($result && mysql_Num_Rows($result) != 0) { $anzahl_gesamt = mysql_result($result, 0, "anzahl"); mysql_free_result($result); } echo "<tr><td ALIGN=\"CENTER\">"; $mlnk[1] = "hilfe.php?http_host={$http_host}&id={$id}"; $mlnk[2] = "raum.php?http_host={$http_host}&id={$id}"; $mlnk[3] = "user.php?http_host={$http_host}&id={$id}"; $mlnk[4] = "edit.php?http_host={$http_host}&id={$id}";
function aktion_sofort($po_id, $po_vater_id, $thread) { global $conn, $t; //aktionen nur fuer Antworten if ($po_vater_id > 0) { $sql = "select po_u_id, date_format(from_unixtime(po_ts), '%d.%m.%Y') as po_date, po_titel,\n\t\t\tth_name, fo_name \n\t\t\tfrom posting, thema, forum\n\t\t\twhere po_id = " . intval($po_vater_id) . "\n\t\t\tand po_th_id = th_id\n\t\t\tand th_fo_id = fo_id"; $query = mysql_query($sql, $conn); if ($query && mysql_num_rows($query) > 0) { //Daten des Vaters holen $user = mysql_result($query, 0, "po_u_id"); $po_ts = mysql_result($query, 0, "po_date"); $po_titel = mysql_result($query, 0, "po_titel"); $thema = mysql_result($query, 0, "th_name"); $forum = mysql_result($query, 0, "fo_name"); @mysql_free_result($query); } else { return; } $sql = "select u_id, u_nick, \n\t\t\tdate_format(from_unixtime(po_ts), '%d.%m.%Y %H:%i') as po_date, po_titel \n\t\t\tfrom user, posting \n\t\t\twhere po_u_id = u_id \n\t\t\tand po_id = " . intval($po_id); $query = mysql_query($sql, $conn); if ($query && mysql_num_rows($query) > 0) { $user_from_id = mysql_result($query, 0, "u_id"); $user_from_nick = mysql_result($query, 0, "u_nick"); $po_ts_antwort = mysql_result($query, 0, "po_date"); $po_titel_antwort = mysql_result($query, 0, "po_titel"); @mysql_free_result($query); } else { return; } //Ist betroffener User Online? $online = ist_online($user); if ($online) { $wann = "Sofort/Online"; } else { $wann = "Sofort/Offline"; } //Threadorder fuer diesen Thread holen $sql = "select po_threadorder \n\t\t\tfrom posting \n\t\t\twhere po_id=" . intval($thread); $query = mysql_query($sql, $conn); if ($query && mysql_num_rows($query) == 1) { $threadorder = mysql_result($query, 0, "po_threadorder"); } else { return; } $baum = erzeuge_baum($threadorder, $po_id, $thread); $text['po_titel'] = $po_titel; $text['po_ts'] = $po_ts; $text['forum'] = $forum; $text['thema'] = $thema; $text['user_from_nick'] = $user_from_nick; $text['po_titel_antwort'] = $po_titel_antwort; $text['po_ts_antwort'] = $po_ts_antwort; $text['baum'] = $baum; aktion($wann, $user, $user_from_id, "", "Antwort auf eigenes Posting", $text); } }
function mail_sende($von, $an, $text, $betreff = "") { // Verschickt Mail von ID $von an ID $an mit Text $text global $t; global $u_nick; $mailversand_ok = true; $fehlermeldung = ""; // User die die Mailbox zu haben, bekommen keine Aktionen per Mainchat $query = "SELECT m_id FROM mail WHERE m_von_uid=" . intval($an) . " AND m_an_uid=" . intval($an) . " and m_betreff = 'MAILBOX IST ZU' and m_status != 'geloescht'"; $result = mysql_query($query); $num = mysql_numrows($result); if ($num >= 1) { $mailversand_ok = false; $fehlermeldung = $t['chat_msg105']; } // Gesperrte User bekommen keine Chatmail Aktionen mehr $query = "SELECT u_id FROM user WHERE u_id=" . intval($an) . " AND u_level='Z'"; $result = mysql_query($query); $num = mysql_numrows($result); if ($num >= 1) { $mailversand_ok = false; $fehlermeldung = "User ist gesperrt, und kann deswegen keine Chatmail empfangen"; } // mailbombing schutz! $query = "SELECT m_id,now()-m_zeit as zeit FROM mail WHERE m_von_uid = " . intval($von) . " AND m_an_uid = '" . intval($an) . " order by m_id desc limit 0,1"; // system_msg("",0,$von,$system_farbe,"DEBUG: $query"); $result = mysql_query($query); if (mysql_numrows($result) == 1) { $a = mysql_fetch_array($result); $zeit = $a['zeit']; } else { $zeit = 999; } if ($zeit < 30) { $mailversand_ok = false; $fehlermeldung = $t['chat_msg104']; } if ($mailversand_ok == true) { $f['m_von_uid'] = $von; $f['m_an_uid'] = $an; $f['m_status'] = "neu"; $f['m_text'] = chat_parse($text); if ($betreff) { $f['m_betreff'] = $betreff; } else { // Betreff aus Text übernehmen und kürzen $f['m_betreff'] = $text; if (strlen($f['m_betreff']) > 5) { $f['m_betreff'] = substr($f['m_betreff'], 0, 30); $f['m_betreff'] = substr($f['m_betreff'], 0, strrpos($f['m_betreff'], " ") + 1); } } $f['m_id'] = schreibe_db("mail", $f, "", "m_id"); // Nachricht über neue E-Mail sofort erzeugen if (ist_online($an)) { aktion("Sofort/Online", $an, $u_nick, "", "Neue Mail", $f); } else { aktion("Sofort/Offline", $an, $u_nick, "", "Neue Mail", $f); } } if (!isset($f['m_id'])) { $f['m_id'] = ""; } $ret = array($f['m_id'], $fehlermeldung); return $ret; }
function logout($o_id, $u_id, $info = "") { // Logout aus dem Gesamtsystem global $dbase, $u_farbe, $conn, $communityfeatures, $logout_logging; if ($logout_logging) { logout_debug($o_id, $info); } // Tabellen online+user exklusiv locken $query = "LOCK TABLES online WRITE, user WRITE"; $result = mysql_query($query, $conn); $o_id = mysql_real_escape_string($o_id); // sec // Aktuelle Punkte auf Punkte in Usertabelle addieren $result = @mysql_query("select o_punkte,o_name,o_knebel, UNIX_TIMESTAMP(o_knebel)-UNIX_TIMESTAMP(NOW()) as knebelrest FROM online WHERE o_id={$o_id}", $conn); if ($result && mysql_num_rows($result) == 1) { $row = mysql_fetch_object($result); $u_name = $row->o_name; if ($row->knebelrest > 0) { $knebelzeit = $row->o_knebel; } else { $knebelzeit = NULL; } $query = "update user set " . "u_punkte_monat=u_punkte_monat+{$row->o_punkte}, " . "u_punkte_jahr=u_punkte_jahr+{$row->o_punkte}, " . "u_punkte_gesamt=u_punkte_gesamt+{$row->o_punkte}, " . "u_knebel='{$knebelzeit}' " . "where u_id={$u_id}"; $result2 = mysql_query($query, $conn); } @mysql_free_result($result); // User löschen $result2 = mysql_query("DELETE FROM online WHERE o_id={$o_id} OR o_user={$u_id}", $conn); // Lock freigeben $query = "UNLOCK TABLES"; $result = mysql_query($query, $conn); // Punkterepair $repair1 = "UPDATE user SET u_punkte_jahr = 0, u_punkte_monat = 0, u_punkte_datum_jahr = YEAR(NOW()), u_punkte_datum_monat = MONTH(NOW()), u_login=u_login WHERE u_punkte_datum_jahr != YEAR(NOW()) AND u_id={$u_id}"; mysql_query($repair1); $repair2 = "UPDATE user SET u_punkte_monat = 0, u_punkte_datum_monat = MONTH(NOW()), u_login=u_login WHERE u_punkte_datum_monat != MONTH(NOW()) AND u_id={$u_id}"; mysql_query($repair2); // Nachrichten an Freunde 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['aktion'] = "Logout"; $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 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); }