source: perl/modules/IRC/lib/BarnOwl/Message/IRC.pm @ 3ad15ff

debianrelease-1.10release-1.4release-1.5release-1.6release-1.7release-1.8release-1.9
Last change on this file since 3ad15ff was f151757, checked in by Alex Vandiver <alexmv@mit.edu>, 16 years ago
Narrowing on a /msg from a user should be personals-only
  • Property mode set to 100644
File size: 1.7 KB
RevLine 
[b38b0b2]1use warnings;
2use strict;
3
4=head1 NAME
5
6BarnOwl::Message::IRC
7
8=head1 DESCRIPTION
9
10A subclass of BarnOwl::Message for IRC messages
11
12=cut
13
14package BarnOwl::Message::IRC;
15
16use base qw( BarnOwl::Message );
17
18sub smartfilter {
19    my $self = shift;
20    my $inst = shift;
21
22    my ($filter, $ftext);
23
24    if($self->is_private) {
25        my $who;
26        if($self->direction eq 'out') {
27            $who = $self->recipient;
28        } else {
29            $who = $self->sender;
30        }
31        $filter = "irc-user-$who";
32        my $ftext  =
[f151757]33             qq{( type ^irc\$ and filter personal and }
34           . qq{( ( direction ^in\$ and sender ^$who\$ ) or ( direction ^out\$ and recipient ^$who\$ ) ) ) };
[b38b0b2]35        BarnOwl::filter("$filter $ftext");
36        return $filter;
37    } else {
[0e52069]38        # To a Channel
39        my $network = $self->network;
40        my $channel = $self->channel;
[8df6cbb]41        my $sender = $self->sender;
42        my ($filter, $ftext);
43        if ($inst && $self->body =~ /^(\S+):/) {
44            $filter = "irc-$network-channel-$channel-$sender-$1";
45            $ftext = qq{type ^irc\$ and network ^$network\$ and channel ^$channel\$ and ( sender ^$sender\$ or sender ^$1\$ )};
46        } else {
47            $filter = "irc-$network-channel-$channel";
48            $ftext = qq{type ^irc\$ and network ^$network\$ and channel ^$channel\$};
49        }
[0e52069]50        BarnOwl::filter("$filter $ftext");
51        return $filter;
[b38b0b2]52    }
53}
54
55sub server {shift->{server}}
56sub network {shift->{network}}
[0e52069]57sub channel {shift->{channel}}
[b38b0b2]58
59# display
[2c40dc0]60sub context {shift->{network};}
61sub subcontext {shift->{recipient};}
[b38b0b2]62
63sub long_sender {shift->{from} || ""};
64
[1fd5041b]65sub login_type {
66    my $self = shift;
67    return " (" . ($self->is_login ? "JOIN" : "PART") . ")";
68}
69
[2fb58e4]70sub login_extra { shift->channel; }
71
[b38b0b2]72
731;
Note: See TracBrowser for help on using the repository browser.