home *** CD-ROM | disk | FTP | other *** search
/ ftp.madoka.org / 2014.12.ftp.madoka.org.tar / ftp.madoka.org / pub / plum / plum2_33_1.lzh / module / log / recent.plm < prev    next >
Text File  |  1999-03-24  |  8KB  |  282 lines

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