From 630af0ed6c0af69c7df2e45aef7a87722a3c00c0 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 6 Apr 2013 13:14:47 +0200 Subject: tagging ychat-perl-legacy --- 0.7.6/modules/postmessage.pm | 90 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 0.7.6/modules/postmessage.pm (limited to '0.7.6/modules/postmessage.pm') diff --git a/0.7.6/modules/postmessage.pm b/0.7.6/modules/postmessage.pm new file mode 100644 index 0000000..5172b4f --- /dev/null +++ b/0.7.6/modules/postmessage.pm @@ -0,0 +1,90 @@ +sub postmessage { + if (not -e "data/online/rooms/$room/$alias" and $tmp ne 'autoaway' and $tmp ne 'autologout') { + &post_prv($alias, "Du befindest Dich nicht im Raum $room und kannst dort auch keine Nachrichten posten!"); + &reload_html; + } + elsif (length $msg > 300) { + &post_prv($alias, "Deine Nachricht enth\344lt zu viele Zeichen. Maximal sind 300 Zeichen erlaubt."); + &reload_html; + } + if ($tmp eq 'away') { + &rm_away($alias, $room); + &post($room, '' . ×tring . " $alias hat sich zur\374ck gemeldet ... ", $alias); + &private_javascript($alias, $room, q[parent.input.document.inf.tmp.value = 'notaway';]); + } + $msg =~ s/>data/msgs/$room"; + if (not $msg =~ s[/me/][$alias]g || $msg =~ s[/m/][$alias]g) { + print MSGFILE '!<;' . time . "<;!<;!<;$alias: $msg
<;$alias<;\n"; + } + else { + $msg =~ s[/me/][$alias]g; + $msg =~ s[/m/][$alias]g; + print MSGFILE '!<;' . time . "<;!<;!<;$msg
<;$alias<;\n"; + } + close MSGFILE; + opendir PID, "data/online/pids/$room"; + my(@pids) = readdir PID; + closedir PID; + foreach $_ (@pids) { + kill 'USR1', $_ if -f "data/online/pids/$room/$_"; + } + &log("$alias: $msg") if $room eq $standardroom; + &reload_html; + } + else { + &command($msg, $tmp); + } +} +sub post { + my($room, $msg2post, $alias, $secroom) = @_; + my(@rooms) = $room; + @rooms = ($room, $secroom) if $room ne $secroom; + foreach my $theroom (@rooms) { + open MSGFILE, ">>data/msgs/$theroom"; + print MSGFILE '!<;' . time . "<;!<;!<;$msg2post
<;$alias<;\n"; + close MSGFILE; + opendir PID, "data/online/pids/$theroom"; + my(@pids) = readdir PID; + closedir PID; + foreach $_ (@pids) { + kill 'USR1', $_ if -f "data/online/pids/$theroom/$_"; + } + } + &log($msg2post) if $room eq $standardroom; +} +sub post_prv { + my($alias2post, $msg2post) = @_; + my $roomofalias = &get_room($alias2post); + return 'false' if not $roomofalias; + open MSGFILE, ">>data/msgs/$roomofalias"; + print MSGFILE "$alias2post<;" . time . "<;!<;!<;$msg2post
<;$alias<;\n"; + close MSGFILE; + opendir PID, "data/online/pids/$roomofalias"; + my(@pids) = readdir PID; + closedir PID; + foreach $_ (@pids) { + kill 'USR1', $_ if -f "data/online/pids/$roomofalias/$_"; + } + return 'true'; +} +sub post_strmsg { + my($alias, $room, $command, $action) = @_; + open MSGFILE, ">>data/msgs/$room"; + print MSGFILE "$alias<;" . time . "<;$command<;$action<;!<;!<;\n"; + close MSGFILE; + opendir PID, "data/online/pids/$room"; + my(@pids) = readdir PID; + closedir PID; + foreach $_ (@pids) { + kill 'USR1', $_ if -f "data/online/pids/$room/$_"; + } +} + +1; -- cgit v1.2.3