--- keitairc-1.30 2006-08-05 11:10:47.716171088 +0900 +++ keitairc 2006-08-05 11:07:42.533604433 +0900 @@ -21,6 +21,9 @@ use HTTP::Response; use AppConfig qw(:argcount); +use Time::Local; +use POSIX; + use constant true => 1; use constant false => 0; use constant cookie_ttl => 86400*3; # 3 days @@ -73,6 +77,7 @@ irc_join => \&on_irc_join, irc_part => \&on_irc_part, irc_public => \&on_irc_public, + irc_msg => \&on_irc_private, irc_notice => \&on_irc_notice, irc_topic => \&on_irc_topic, irc_332 => \&on_irc_topicraw, @@ -145,6 +150,16 @@ } ################################################################ +# on_irc_private added by yoosee@init.org for !foo channel +sub on_irc_private{ + my ($kernel, $who, $channel, $msg) = @_[KERNEL, ARG0 .. ARG2]; + $who =~ s/!.*//; + $channel = $channel->[0]; + $msg = Jcode->new($msg, 'jis')->euc; + &add_message($channel, $who, $msg); +} + +################################################################ sub on_irc_notice{ my ($kernel, $who, $channel, $msg) = @_[KERNEL, ARG0 .. ARG2]; $who =~ s/!.*//; @@ -254,11 +269,27 @@ my $accesskey = 1; my $channel; + my @t = localtime(time); + my $day0am = timelocal(0,0,0,$t[3],$t[4],$t[5]); + for my $canon_channel (sort { $mtime{$b} <=> $mtime{$a}; }(keys(%channel_name))){ $channel = $channel_name{$canon_channel}; + # added by yoosee for displaying date + if(0 < $day0am && $mtime{$canon_channel} < $day0am) { + while($mtime{$canon_channel} < $day0am) { + $day0am -= 24*60*60; + } + if($day0am >=0) { + $buf .= strftime("-- %Y.%m.%d --
", localtime($day0am)); + } else { + $buf .= "-- NEVER --
"; + } + } + # end + $buf .= &label($accesskey); if($accesskey < 10){ @@ -283,6 +314,9 @@ uri_escape($channel), $unread_lines{$canon_channel}); } + # display the time of last speak on the channel + $buf .= strftime(" (%H:%M)", localtime($mtime{$canon_channel})) if $mtime{$canon_channel}; + $buf .= '
'; }