home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / 2.x / plum2_15_2.lzh / module / log / recent.plm < prev    next >
Text File  |  1997-12-07  |  7KB  |  242 lines

  1. # <!-- -*- perl -*-
  2. # $Id: recent.plm,v 2.3 1997/12/07 14:11:35 hasegawa Exp $
  3. # copyright (c)1997 pupu_j <hasegawa@agusa.nuie.nagoya-u.ac.jp>
  4.  
  5. package log_recent;
  6.  
  7. $HEADER = '%H:%M';
  8. $LINE = 50;
  9. $SAVE = &'list('privmsg');
  10.  
  11. $_ = 'log_recent';
  12.  
  13. sub client_open {
  14.   local($clientno) = @_;
  15.   foreach $log (&'array($recent[$'userno[$clientno]])) {
  16.     &'c_print($clientno, '', 'NOTICE', $'nick[$clientno], $log);
  17.   }
  18. }
  19.  
  20. sub ss_privmsg {
  21.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  22.   local($nick, $vchan);
  23.   if (&savecommand($'userno[$serverno], $cmd)) {
  24.     $nick = &'prefix($prefix);
  25.     if ($chan =~ /^[\#\&\+\-]/) {
  26.       $vchan = &'alias($chan);
  27.       if (&'exist($'nameslist{$'userno[$serverno], $chan}, $nick, "\+$nick", "\@$nick")) {
  28.         &writelog($'userno[$serverno], "<$vchan:$nick> $msg");
  29.       } else {
  30.         &writelog($'userno[$serverno], "($vchan:$nick) $msg");
  31.       }
  32.     } else {
  33.       &writelog($'userno[$serverno], "=$nick= $msg");
  34.     }
  35.   }
  36.   return ($prefix, $cmd, $chan, $msg);
  37. }
  38.  
  39. sub ss_notice {
  40.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  41.   local($nick, $vchan);
  42.   if (&savecommand($'userno[$serverno], $cmd)) {
  43.     $nick = &'prefix($prefix);
  44.     if ($chan =~ /^[\#\&\+\-]/) {
  45.       $vchan = &'alias($chan);
  46.       if (&'exist($'nameslist{$'userno[$serverno], $chan}, $nick, "\+$nick", "\@$nick")) {
  47.         &writelog($'userno[$serverno], "<$vchan:$nick> $msg");
  48.       } else {
  49.         &writelog($'userno[$serverno], "($vchan:$nick) $msg");
  50.       }
  51.     } else {
  52.       &writelog($'userno[$serverno], "=$nick= $msg");
  53.     }
  54.   }
  55.   return ($prefix, $cmd, $chan, $msg);
  56. }
  57.  
  58. sub ss_join {
  59.   local($serverno, $prefix, $cmd, $chan) = @_;
  60.   local($nick, $name, $mode, $vchan);
  61.   if (&savecommand($'userno[$serverno], $cmd)) {
  62.     $nick = &'prefix($prefix);
  63.     ($name, $mode) = (split(/\cG/, $chan), '');
  64.     $vchan = &'alias($name);
  65.     if (index($mode, 'o') != -1) {
  66.       &writelog($'userno[$serverno], "+ \@$nick ($prefix) to $vchan");
  67.     } elsif (index($mode, 'v') != -1) {
  68.       &writelog($'userno[$serverno], "+ +$nick ($prefix) to $vchan");
  69.     } else {
  70.       &writelog($'userno[$serverno], "+ $nick ($prefix) to $vchan");
  71.     }
  72.   }
  73.   return ($prefix, $cmd, $chan);
  74. }
  75.  
  76. sub ss_part {
  77.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  78.   local($nick, $vchan);
  79.   if (&savecommand($'userno[$serverno], $cmd)) {
  80.     $nick = &'prefix($prefix);
  81.     $vchan = &'alias($chan);
  82.     $msg = '' unless $msg;
  83.     &writelog($'userno[$serverno], "- $nick from $vchan ($msg)");
  84.   }
  85.   return ($prefix, $cmd, $chan, $msg);
  86. }
  87.  
  88. sub ss_kick {
  89.   local($serverno, $prefix, $cmd, $chan, $whom, $msg) = @_;
  90.   local($nick, $vchan);
  91.   if (&savecommand($'userno[$serverno], $cmd)) {
  92.     $nick = &'prefix($prefix);
  93.     $vchan = &'alias($chan);
  94.     &writelog($'userno[$serverno], "- $whom by $nick from $vchan ($msg)");
  95.   }
  96.   return ($prefix, $cmd, $chan, $whom, $msg);
  97. }
  98.  
  99. sub ss_invite {
  100.   local($serverno, $prefix, $cmd, $me, $chan) = @_;
  101.   local($nick, $vchan);
  102.   if (&savecommand($'userno[$serverno], $cmd)) {
  103.     $nick = &'prefix($prefix);
  104.     $vchan = &'alias($chan);
  105.     &writelog($'userno[$serverno], "Invited by $nick: $vchan");
  106.   }
  107.   return ($prefix, $cmd, $me, $chan);
  108. }
  109.  
  110. sub ss_mode {
  111.   local($serverno, $prefix, $cmd, $chan, @modes) = @_;
  112.   local($nick, $vchan);
  113.   if (&savecommand($'userno[$serverno], $cmd)) {
  114.     $nick = &'prefix($prefix);
  115.     $vchan = &'alias($chan);
  116.     &writelog($'userno[$serverno], "Mode by $nick: $vchan " . join(' ', @modes));
  117.   }
  118.   return ($prefix, $cmd, $chan, @modes);
  119. }
  120.  
  121. sub ss_nick {
  122.   local($serverno, $prefix, $cmd, $newnick) = @_;
  123.   local($nick);
  124.   if (&savecommand($'userno[$serverno], $cmd)) {
  125.     $nick = &'prefix($prefix);
  126.     if ($nick eq $'nick[$serverno] || $newnick eq $'nick[$serverno]) {
  127.       &writelog($'userno[$serverno], "My nick is changed ($nick -> $newnick)");
  128.     } else {
  129.       &writelog($'userno[$serverno], "$nick -> $newnick");
  130.     }
  131.   }
  132.   return ($prefix, $cmd, $newnick);
  133. }
  134.  
  135. sub ss_quit {
  136.   local($serverno, $prefix, $cmd, $msg) = @_;
  137.   local($nick);
  138.   if (&savecommand($'userno[$serverno], $cmd)) {
  139.     $nick = &'prefix($prefix);
  140.     &writelog($'userno[$serverno], "! $nick ($msg)");
  141.   }
  142.   return ($prefix, $cmd, $msg);
  143. }
  144.  
  145. sub ss_topic {
  146.   local($serverno, $prefix, $cmd, $chan, $topic) = @_;
  147.   local($nick, $vchan);
  148.   if (&savecommand($'userno[$serverno], $cmd)) {
  149.     $nick = &'prefix($prefix);
  150.     $vchan = &'alias($chan);
  151.     &writelog($'userno[$serverno], "Topic of channel $vchan by $nick: $topic");
  152.   }
  153.   return ($prefix, $cmd, $chan, $topic);
  154. }
  155.  
  156. sub sp_privmsg {
  157.   local($serverno, $prefix, $cmd, $chan, $msg) = @_;
  158.   local($vchan);
  159.   if (&savecommand($'userno[$serverno], $cmd)) {
  160.     $vchan = &'alias($chan);
  161.     &writelog($'userno[$serverno], ">$vchan:$'nick[$serverno]< $msg");
  162.   }
  163.   return ($prefix, $cmd, $chan, $msg);
  164. }
  165.  
  166. sub savecommand {
  167.   local($userno, $cmd) = @_;
  168.   local($save);
  169.   $save = &'property($userno, 'save');
  170.   if (defined($save)) {
  171.     $save = '';
  172.     foreach $mask (&'property($userno, 'save')) {
  173.       $save = &'add($save, split(/\,/, "\L$mask\U"));
  174.     }
  175.   } else {
  176.     $save = $SAVE;
  177.   }
  178.   return &'exist($save, "\L$cmd\E");
  179. }
  180.  
  181. sub writelog {
  182.   local($userno, $log) = @_;
  183.   local(@log, $header, $line);
  184.   $header = &'property($userno, 'header');
  185.   $header = $HEADER unless defined($header);
  186.   $header = &'date($header);
  187.   @log = &'array($recent[$userno]);
  188.   push(@log, "$header $log");
  189.   $line = &'property($userno, 'line');
  190.   $line = $LINE unless defined($line);
  191.   while (scalar(@log) > $line) {
  192.     shift(@log);
  193.   }
  194.   $recent[$userno] = &'list(@log);
  195. }
  196.  
  197. __END__
  198. --><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
  199. <HTML><HEAD><TITLE> log/recent.plm </TITLE></HEAD><BODY>
  200.  
  201. $B%*%s%i%$%s%I%-%e%a%s%H(B
  202.  
  203.  
  204. <HR><H3> $BL>A0(B </H3>
  205.  
  206. log/recent.plm - $B%/%i%$%"%s%H$r@\B3$7$?$H$-$K:G6a$N%a%C%;!<%8$rAw$k(B
  207.  
  208.  
  209. <HR><H3> $B@bL@(B </H3>
  210.  
  211. $B:G6a$N%a%C%;!<%8$r;XDj$7$??t$@$1J]B8$7$F$*$-!"(B
  212. $B%/%i%$%"%s%H$r@\B3$7$?$H$-$K!"$=$l$rAw$j$^$9!#(B
  213.  
  214.  
  215. <HR><H3> $B%W%m%Q%F%#(B </H3>
  216.  
  217. <DL>
  218. <DT> log.recent.header $B$X%C%@(B
  219. <DD>    $B%m%0$N;~9o$N%U%)!<%^%C%H$r;XDj$7$^$9!#(B
  220.         %$B$G$O$8$^$kJ8;z$,$"$k$H!"BP1~$9$k;~4V$KJQ49$5$l$^$9!#(B
  221. <DT> log.recent.line $B9T?t(B
  222. <DD>    $B%m%0$r;D$99T?t$r;XDj$7$^$9!#(B
  223.         $B%G%U%)%k%H$G$O(B50$B9T$G$9!#(B
  224. <DT> log.recent.save ({invite|join|kick|mode|nick|notice|part|privmsg|quit|topic})
  225. <DD>    $BJ]B8$9$k%a%C%;!<%8$N<oN`$r;XDj$7$^$9!#(B
  226.         $B%G%U%)%k%H$G$O!V(Bprivmsg$B!W$@$1$G$9!#(B
  227. </DL>
  228.  
  229.  
  230. <HR><H3> $B@_DjNc(B </H3>
  231.  
  232. <PRE>
  233. log.recent.header: %H%M%S
  234. log.recent.save: notice,privmsg,topic
  235. </PRE>
  236.  
  237. $B$X%C%@$r!V(B%H%M%S$B!W$K$7!"%m%0$N<oN`$r!V(Bnotice$B!W!"!V(Bprivmsg$B!W!"!V(Btopic$B!W(B
  238. $B$N(B3$B<oN`$K$7$^$9!#(B
  239. $B!V(B%H$B!W!"!V(B%M$B!W!"!V(B%S$B!W$O$=$l$>$l8=:_$N;~!"J,!"IC$KJQ49$5$l$^$9!#(B
  240.  
  241. </BODY></HTML>
  242.