From 3f19d3aae07c5cd20810862de80d9306d512b918 Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Mon, 29 Aug 2016 13:12:17 +0200 Subject: [PATCH] Add an option to first display a greeting message, before showing messages --- CHANGELOG | 4 +++- chat.php | 50 +++++++++++++++++++++++++++++++++----------------- lang_de.php | 35 +++++++++++++++++++---------------- lang_en.php | 5 ++++- 4 files changed, 59 insertions(+), 35 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index dab88e0..dc329e4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +Version 1.21 - Aug. 29, 2016 Don't display empty option for system messages in delete messages by name Don't show a kick button on your own session in the list of active sessions Allow ignoring incognito chatters @@ -7,8 +8,9 @@ Enable image embedding without cookies as there is no more risk of session leaka Allow configuring password and nickname regex Prevent browser from caching at all. Add external CSS setting for large stylesheets -Make /me work with custom texts +Make /me work with custom texts set under system messages in setup Set replace of a filter used for kicking as kickmessage +Add an option to first display a greeting message, before showing messages Version 1.20.6 - Jul. 23, 2016 Simplify ignore logic + disallow ignoring chatters with higher status diff --git a/chat.php b/chat.php index b83552c..3737559 100644 --- a/chat.php +++ b/chat.php @@ -89,6 +89,9 @@ function route(){ }elseif($_REQUEST['action']==='controls'){ check_session(); send_controls(); + }elseif($_REQUEST['action']==='greeting'){ + check_session(); + send_greeting(); }elseif($_REQUEST['action']==='delete'){ check_session(); if($_REQUEST['what']==='all'){ @@ -225,7 +228,7 @@ function route_setup(){ if(!valid_admin()){ send_alogin(); } - $C['bool_settings']=array('suguests', 'imgembed', 'timestamps', 'trackip', 'memkick', 'forceredirect', 'incognito', 'sendmail', 'modfallback', 'disablepm', 'eninbox'); + $C['bool_settings']=array('suguests', 'imgembed', 'timestamps', 'trackip', 'memkick', 'forceredirect', 'incognito', 'sendmail', 'modfallback', 'disablepm', 'eninbox', 'enablegreeting'); $C['colour_settings']=array('colbg', 'coltxt'); $C['msg_settings']=array('msgenter', 'msgexit', 'msgmemreg', 'msgsureg', 'msgkick', 'msgmultikick', 'msgallkick', 'msgclean', 'msgsendall', 'msgsendmem', 'msgsendmod', 'msgsendadm', 'msgsendprv'); $C['number_settings']=array('memberexpire', 'guestexpire', 'kickpenalty', 'entrywait', 'captchatime', 'messageexpire', 'messagelimit', 'maxmessage', 'maxname', 'minpass', 'defaultrefresh', 'numnotes'); @@ -1306,11 +1309,15 @@ function send_frameset(){ echo "$H[meta_html]"; echo ''.get_setting('chatname').''; print_stylesheet(); - if(isSet($_COOKIE['language'])){ - echo "<body>$I[noframes]$H[backtologin]</body>"; + echo ''; + echo ""; + if(get_setting('enablegreeting')){ + echo ""; }else{ - echo "<body>$I[noframes]$H[backtologin]</body>"; + echo ""; } + echo ""; + echo "<body>$I[noframes]$H[backtologin]</body>"; exit; } @@ -1321,11 +1328,7 @@ function send_messages(){ }else{ $nocache=''; } - if(isSet($_COOKIE[COOKIENAME])){ - print_start('messages', $U['refresh'], "$_SERVER[SCRIPT_NAME]?action=view$nocache"); - }else{ - print_start('messages', $U['refresh'], "$_SERVER[SCRIPT_NAME]?action=view&session=$U[session]&lang=$language$nocache"); - } + print_start('messages', $U['refresh'], "$_SERVER[SCRIPT_NAME]?action=view&session=$U[session]&lang=$language$nocache"); echo '
'; echo ''; echo '
'; @@ -1510,11 +1513,7 @@ function send_waiting_room(){ send_frameset(); }else{ $refresh=(int) get_setting('defaultrefresh'); - if(isSet($_COOKIE['language'])){ - print_start('waitingroom', $refresh, "$_SERVER[SCRIPT_NAME]?action=wait&nc=".substr(time(),-6)); - }else{ - print_start('waitingroom', $refresh, "$_SERVER[SCRIPT_NAME]?action=wait&session=$U[session]&lang=$language&nc=".substr(time(),-6)); - } + print_start('waitingroom', $refresh, "$_SERVER[SCRIPT_NAME]?action=wait&session=$U[session]&lang=$language&nc=".substr(time(),-6)); echo "

$I[waitingroom]

"; if($wait){ printf($I['waittext'], style_this($U['nickname'], $U['style']), $timeleft); @@ -1678,6 +1677,20 @@ function send_post(){ print_end(); } +function send_greeting(){ + global $I, $U, $language; + print_start('greeting', $U['refresh'], "$_SERVER[SCRIPT_NAME]?action=view&session=$U[session]&lang=$language"); + printf("

$I[greetingmsg]

", style_this($U['nickname'], $U['style'])); + echo '
'; + printf("
$I[entryhelp]", $U['refresh']); + $rulestxt=get_setting('rulestxt'); + if(!empty($rulestxt)){ + echo "

$I[rules]

$rulestxt"; + } + echo '
'; + print_end(); +} + function send_help(){ global $H, $I, $U; print_start('help'); @@ -3363,7 +3376,7 @@ function init_chat(){ $db->exec('CREATE INDEX ' . PREFIX . 'incognito ON ' . PREFIX . 'sessions(incognito);'); $db->exec('CREATE TABLE ' . PREFIX . "settings (setting varchar(50) NOT NULL PRIMARY KEY, value varchar(20000) NOT NULL);"); } - $settings=array(array('guestaccess', '0'), array('globalpass', ''), array('englobalpass', '0'), array('captcha', '0'), array('dateformat', 'm-d H:i:s'), array('rulestxt', ''), array('msgencrypted', '0'), array('dbversion', DBVERSION), array('css', 'a:visited{color:#B33CB4;} a:active{color:#FF0033;} a:link{color:#0000FF;} input,select,textarea{color:#FFFFFF;background-color:#000000;} a img{width:15%} a:hover img{width:35%} .error{color:#FF0033;} .delbutton{background-color:#660000;} .backbutton{background-color:#004400;} #exitbutton{background-color:#AA0000;} .center-table{margin-left:auto;margin-right:auto;} body{text-align:center;} .left-table{width:100%;text-align:left;} .right{text-align:right;} .left{text-align:left;} .right-table{border-spacing:0px;margin-left:auto;} .padded{padding:5px;} #chatters{max-height:100px;overflow-y:auto;} .center{text-align:center;}'), array('memberexpire', '60'), array('guestexpire', '15'), array('kickpenalty', '10'), array('entrywait', '120'), array('messageexpire', '14400'), array('messagelimit', '150'), array('maxmessage', 2000), array('captchatime', '600'), array('colbg', '000000'), array('coltxt', 'FFFFFF'), array('maxname', '20'), array('minpass', '5'), array('defaultrefresh', '20'), array('dismemcaptcha', '0'), array('suguests', '0'), array('imgembed', '1'), array('timestamps', '1'), array('trackip', '0'), array('captchachars', '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), array('memkick', '1'), array('forceredirect', '0'), array('redirect', ''), array('incognito', '1'), array('chatname', 'My Chat'), array('topic', ''), array('msgsendall', $I['sendallmsg']), array('msgsendmem', $I['sendmemmsg']), array('msgsendmod', $I['sendmodmsg']), array('msgsendadm', $I['sendadmmsg']), array('msgsendprv', $I['sendprvmsg']), array('msgenter', $I['entermsg']), array('msgexit', $I['exitmsg']), array('msgmemreg', $I['memregmsg']), array('msgsureg', $I['suregmsg']), array('msgkick', $I['kickmsg']), array('msgmultikick', $I['multikickmsg']), array('msgallkick', $I['allkickmsg']), array('msgclean', $I['cleanmsg']), array('numnotes', '3'), array('mailsender', 'www-data '), array('mailreceiver', 'Webmaster '), array('sendmail', '0'), array('modfallback', '1'), array('guestreg', '0'), array('disablepm', '0'), array('disabletext', "

$I[disabledtext]

"), array('defaulttz', '0'), array('eninbox', '0'), array('passregex', '.*'), array('nickregex', '^[A-Za-z0-9]*$'), array('externalcss', '')); + $settings=array(array('guestaccess', '0'), array('globalpass', ''), array('englobalpass', '0'), array('captcha', '0'), array('dateformat', 'm-d H:i:s'), array('rulestxt', ''), array('msgencrypted', '0'), array('dbversion', DBVERSION), array('css', 'a:visited{color:#B33CB4;} a:active{color:#FF0033;} a:link{color:#0000FF;} input,select,textarea{color:#FFFFFF;background-color:#000000;} a img{width:15%} a:hover img{width:35%} .error{color:#FF0033;} .delbutton{background-color:#660000;} .backbutton{background-color:#004400;} #exitbutton{background-color:#AA0000;} .center-table{margin-left:auto;margin-right:auto;} body{text-align:center;} .left-table{width:100%;text-align:left;} .right{text-align:right;} .left{text-align:left;} .right-table{border-spacing:0px;margin-left:auto;} .padded{padding:5px;} #chatters{max-height:100px;overflow-y:auto;} .center{text-align:center;}'), array('memberexpire', '60'), array('guestexpire', '15'), array('kickpenalty', '10'), array('entrywait', '120'), array('messageexpire', '14400'), array('messagelimit', '150'), array('maxmessage', 2000), array('captchatime', '600'), array('colbg', '000000'), array('coltxt', 'FFFFFF'), array('maxname', '20'), array('minpass', '5'), array('defaultrefresh', '20'), array('dismemcaptcha', '0'), array('suguests', '0'), array('imgembed', '1'), array('timestamps', '1'), array('trackip', '0'), array('captchachars', '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), array('memkick', '1'), array('forceredirect', '0'), array('redirect', ''), array('incognito', '1'), array('chatname', 'My Chat'), array('topic', ''), array('msgsendall', $I['sendallmsg']), array('msgsendmem', $I['sendmemmsg']), array('msgsendmod', $I['sendmodmsg']), array('msgsendadm', $I['sendadmmsg']), array('msgsendprv', $I['sendprvmsg']), array('msgenter', $I['entermsg']), array('msgexit', $I['exitmsg']), array('msgmemreg', $I['memregmsg']), array('msgsureg', $I['suregmsg']), array('msgkick', $I['kickmsg']), array('msgmultikick', $I['multikickmsg']), array('msgallkick', $I['allkickmsg']), array('msgclean', $I['cleanmsg']), array('numnotes', '3'), array('mailsender', 'www-data '), array('mailreceiver', 'Webmaster '), array('sendmail', '0'), array('modfallback', '1'), array('guestreg', '0'), array('disablepm', '0'), array('disabletext', "

$I[disabledtext]

"), array('defaulttz', '0'), array('eninbox', '0'), array('passregex', '.*'), array('nickregex', '^[A-Za-z0-9]*$'), array('externalcss', ''), array('enablegreeting', '0')); $stmt=$db->prepare('INSERT INTO ' . PREFIX . 'settings (setting, value) VALUES (?, ?);'); foreach($settings as $pair){ $stmt->execute($pair); @@ -3553,6 +3566,9 @@ function update_db(){ if($dbversion<27){ $db->exec('INSERT INTO ' . PREFIX . 'settings (setting, value) VALUES (\'externalcss\', \'\');'); } + if($dbversion<28){ + $db->exec('INSERT INTO ' . PREFIX . 'settings (setting, value) VALUES (\'enablegreeting\', \'0\');'); + } update_setting('dbversion', DBVERSION); if(get_setting('msgencrypted')!=MSGENCRYPTED){ if(!extension_loaded('openssl')){ @@ -3741,8 +3757,8 @@ function load_lang(){ function load_config(){ date_default_timezone_set('UTC'); - define('VERSION', '1.20.6'); // Script version - define('DBVERSION', 27); // Database layout version + define('VERSION', '1.21'); // Script version + define('DBVERSION', 28); // Database layout version define('MSGENCRYPTED', false); // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing! define('ENCRYPTKEY', 'MY_KEY'); // Encryption key for messages define('DBHOST', 'localhost'); // Database host diff --git a/lang_de.php b/lang_de.php index 691ca78..7162c65 100644 --- a/lang_de.php +++ b/lang_de.php @@ -40,7 +40,7 @@ $T=array( 'suconfirm' => 'Passowrt bestätigen:', 'susuccess' => 'Erfolgreich registriert!', 'initbtn' => 'Chat initalisieren', - 'initdbexist' => 'Datenbanktabellen existieren bereits! Um vortzufahren, musst du diese Tabellen zuerst manuell löschen.', + 'initdbexist' => 'Datenbanktabellen existieren bereits! Um vortzufahren, müssem Sie diese Tabellen zuerst manuell löschen.', 'initsuexist' => 'Ein Superadmin existiert bereits!', 'initgosetup' => 'Zur Einrichtungsseite gehen', 'dbupdate' => 'Datenbank erfolgreich aktualisiert!', @@ -111,7 +111,7 @@ $T=array( 'apply' => 'Anwenden', 'newfilter' => 'Neuer Filter:', 'add' => 'Hinzufügen', - 'noframes' => 'Dieser Chat benutzt Frames. Bitte aktiviere Frames in deinem Browser oder benutze einen dafür geeigneten!', + 'noframes' => 'Dieser Chat benutzt Frames. Bitte aktivieren Sie Frames in Ihrem Browser oder benutzen Sie einen dafür geeigneten!', 'delselmes' => 'Ausgewählte Nachrichten löschen', 'staffnotes' => 'Moderatornotizen', 'adminnotes' => 'Adminnotizen', @@ -119,8 +119,8 @@ $T=array( 'lastedited' => 'Zuletzt bearbeitet von %1$s um %2$s', 'savenotes' => 'Notizen speichern', 'waitingroom' => 'Warteraum', - 'waittext' => 'Wilkommen %1$s, deine Anmeldung wurde verzögert, du kannst den Chat in %2$d Sekunden benutzen.', - 'admwaittext' => 'Wilkommen %1$s, deine Anmeldung wurde verzögert, du kannst den Chat benutzen, sobald ein Moderator dich hereinlässt.', + 'waittext' => 'Wilkommen %1$s, Ihre Anmeldung wurde verzögert, Sie können den Chat in %2$d Sekunden benutzen.', + 'admwaittext' => 'Wilkommen %1$s, Ihre Anmeldung wurde verzögert, Sie könnent den Chat benutzen, sobald ein Moderator Sie hereinlässt.', 'waitreload' => 'Wenn diese Seite sich nicht alle %d Sekunden aktualisiert, benutze den Knopf unten, um die Seite manuell neu zu laden!', 'reload' => 'Aktualisieren', 'rules' => 'Regeln', @@ -135,12 +135,12 @@ $T=array( 'switchsingle' => 'Zu Einzel-Zeile wechseln', 'switchmulti' => 'Zu Mehrfach-Zeilen wechseln', 'help' => 'Hilfe', - 'helpguest' => 'Alle Funktionen sollten recht selbsterklärend sein, benutze einfach die Knöpfe. In deinem Profil kannst du die Aktualisierungsrate, Schriftfarbe und deine gewünschte Postboxgröße anpassen.
Hinweis: Dies ist ein Chat, wenn du also nichts schreibst, wirst du automatisch nach einiger Zeit abgemeldet.', - 'helpembed' => 'Wenn du ein Bild einbetten möchtest, füge einfach ein [img] vor die Adresse deines Bildes. Beispiel: [img]http://example.com/images/file.jpg bettet das Bild in deinen Beitrag ein.', - 'helpmem' => 'Mitglieder: Du wirst einige zusätzliche Optionen in deinem Profil haben. Du kannst deine Schriftart ändern und du kannst dein Passwort jederzeit ändern.', - 'helpmod' => 'Moderatoren: Achte auf den Admin-Knof unten. Er bringt eine Seite auf, auf der du Nachrichten löschen kannst, Teilnehmer rausschmeißen kannst, alle aktive Sitzungen anzeigen lassen kannst und den Gastzugriff deaktivieren kannst, falls dies nötig sein sollte.', - 'helpadm' => 'Admins: Du wirst zusätzlich in der Lage sein Gäste zu registrieren, Mitglieder zu verwalten und neue Nicknanem zu registrieren, ohne dass sie im Raum sind.', - 'profile' => 'Dein Profil', + 'helpguest' => 'Alle Funktionen sollten recht selbsterklärend sein, benutze einfach die Knöpfe. In Ihrem Profil könnsen Sie die Aktualisierungsrate, Schriftfarbe und Ihre gewünschte Postboxgröße anpassen.
Hinweis: Dies ist ein Chat, wenn Sie also nichts schreiben, werden Sie automatisch nach einiger Zeit abgemeldet.', + 'helpembed' => 'Wenn Sie ein Bild einbetten möchten, fügen Sie einfach ein [img] vor die Adresse des Bildes. Beispiel: [img]http://example.com/images/file.jpg bettet das Bild in Ihrem Beitrag ein.', + 'helpmem' => 'Mitglieder: Sie werden einige zusätzliche Optionen in Ihrem Profil haben. Sie können Ihre Schriftart ändern und Ihr Passwort jederzeit ändern.', + 'helpmod' => 'Moderatoren: Achte auf den Admin-Knof unten. Er bringt eine Seite auf, auf der Sie Nachrichten löschen können, Teilnehmer rausschmeißen können, alle aktive Sitzungen anzeigen lassen können und den Gastzugriff deaktivieren können, falls dies nötig sein sollte.', + 'helpadm' => 'Admins: Sie werden zusätzlich in der Lage sein Gäste zu registrieren, Mitglieder zu verwalten und neue Nicknanem zu registrieren.', + 'profile' => 'Ihr Profil', 'ignore' => 'Ignorieren', 'unignore' => 'Nicht mehr ignorieren', 'refreshrate' => 'Aktualisierungsrate (5-150 Sekunden)', @@ -151,7 +151,7 @@ $T=array( 'roomdefault' => 'Raumstandard', 'bold' => 'Fett', 'italic' => 'Kursiv', - 'fontexample' => 'Beispiel für deine gewählte Schrift', + 'fontexample' => 'Beispiel für Ihre gewählte Schrift', 'timestamps' => 'Zeitstempel anzeigen', 'embed' => 'Bilder einbetten', 'incognito' => 'Inkognito Modus', @@ -175,9 +175,9 @@ $T=array( 'exit' => 'Chat verlassen', 'bye' => 'Auf Wiedersehen %s, besuche uns bald wieder!', 'colourtable' => 'Farbtabelle', - 'backtoprofile' => 'Zurück zu deinem Profil', + 'backtoprofile' => 'Zurück zu Ihrem Profil', 'copy' => 'Kopiere:', - 'choosecol' => 'Gast, such dir eine Farbe aus:', + 'choosecol' => 'Gast, suchen dir eine Farbe aus:', 'randomcol' => 'Zufällige Farbe', 'enter' => 'Chat beitreten', 'error' => 'Fehler', @@ -203,7 +203,7 @@ $T=array( 'succchg' => 'Status of %s successfully changed.', 'wrongpass' => 'Falsches Passwort!', 'wrongglobalpass' => 'Falsches gloables Passwort!', - 'succprofile' => 'Dein Profil wurde erfolgreich gespeichert.', + 'succprofile' => 'Ihr Profil wurde erfolgreich gespeichert.', 'backtologin' => 'Zurück zur Anmeldeseite.', 'backtochat' => 'Zurück zum Chat.', 'Beige' => 'Beige', @@ -255,7 +255,7 @@ $T=array( 'messageexpire' => 'Nachrichten-Ablaufzeit (Minuten)', 'messagelimit' => 'Nachrichtenlimit (öffentliche)', 'maxmessage' => 'Maximale Nachrichenlänge', - 'confirm' => 'Bist du sicher?', + 'confirm' => 'Sind Sie sicher?', 'yes' => 'Ja', 'no' => 'Nein', 'colbg' => 'Hintergrundfarbe', @@ -306,7 +306,7 @@ $T=array( 'older' => 'Älter', 'newer' => 'Neuer', 'accessdenied' => 'Zugriff verweigert', - 'loggedinas' => 'Du bist als %s angemeldet und hast keinen Zugriff auf diesen Bereich.', + 'loggedinas' => 'Sie sind als %s angemeldet und haben keinen Zugriff auf diesen Bereich.', 'newnickname' => 'Neuer Nickname:', 'nicknametaken' => 'Nickname ist bereits vergeben', 'nopass' => 'Ungültiges Passwort (Mindestens %d Zeichen), Nickname nicht geändert', @@ -350,5 +350,8 @@ $T=array( 'nickregex' => 'Nickname-Regex', 'passregex' => 'Passwort-Regex', 'externalcss' => 'Link zu externer CSS Datei', + 'greetingmsg' => 'Willkommen %s!', + 'entryhelp' => 'Falls dieser Frame nich in %d Sekunden neu lädt, muss automatische Weiterleitun (meta refresh) in Ihrem Browser aktiviert werden. Stellen Sie auch sicher, dass keine Web filter, locale Proxy oder Browser Plugins das automatische neu-laden verhindern! Dies könnte z.B. "Polipo", "NoScript", etc. sein.
Zur Not (oder im Falle von Server/Proxy Fehlern) können Sie die Knöpfe unten verwenden, um manuell neu zu laden.', + 'enablegreeting' => 'Zeige eine Begrüßungsnachricht an, befor die Nachrichten geladen werden', ); ?> diff --git a/lang_en.php b/lang_en.php index b78d5a1..db5668a 100644 --- a/lang_en.php +++ b/lang_en.php @@ -139,7 +139,7 @@ $I=array( 'helpembed' => 'If you want to embed an image in your post, simply put [img] in front of your image URL. Example: [img]http://example.com/images/file.jpg will embed the image in your post.', 'helpmem' => 'Members: You\'ll have some more options in your profile. You can adjust your font face and you can change your password anytime.', 'helpmod' => 'Moderators: Notice the Admin-button at the bottom. It\'ll bring up a page where you can clean the room, kick chatters, view all active sessions and disable guest access completely if needed.', - 'helpadm' => 'Admins: You\'ll be furthermore able to register guests, edit members and register new nicks without them beeing in the room.', + 'helpadm' => 'Admins: You\'ll be furthermore able to register guests, edit members and register new nicknames.', 'profile' => 'Your Profile', 'ignore' => 'Ignore', 'unignore' => 'Don\'t ignore anymore', @@ -350,5 +350,8 @@ $I=array( 'nickregex' => 'Nickname regex', 'passregex' => 'Password regex', 'externalcss' => 'Link to external CSS file', + 'greetingmsg' => 'Welcome %s!', + 'entryhelp' => 'If this frame does not reload in %d seconds, you\'ll have to enable automatic redirection (meta refresh) in your browser. Also make sure no web filter, local proxy tool or browser plugin is preventing automatic refreshing! This could be for example "Polipo", "NoScript", etc.
As a workaround (or in case of server/proxy reload errors) you can always use the buttons at the bottom to refresh manually.', + 'enablegreeting' => 'Show a greeting message before showing the messages', ); ?>