fix console.pl max scroll depth
[spider.git] / cmd / msg.pl
1 #
2 # a universal message mangling routine which allows the sysop
3 # tinker with the properties of a message
4 #
5 # Copyright (c) 1999 Dirk Koopman G1TLH
6 #
7 #
8 #
9
10 my ($self, $line) = @_;
11 return (1, $self->msg('e5')) if $self->priv < 6;
12
13 # a line is cmd, msgno, data 
14 my @f = split /\s+/, $line, 3;
15 my $cmd;
16 my $msgno;
17 my $data;
18
19 #$DB::single = 1;
20
21 $cmd = shift @f if @f && $f[0] =~ /^\w+$/;
22 $msgno = shift @f if @f && $f[0] =~ /^\d+$/;
23
24 # handle queuing
25 if ($cmd =~ /^qu/i && !$msgno) {
26         DXMsg::queue_msg(0);
27         return (1, $self->msg('msg1'));
28 }
29 if ($cmd =~ /^qu/i) {
30         DXMsg::queue_msg(1);
31         return (1, $self->msg('msg2'));
32 }
33
34 return (1, $self->msg('msgu')) unless $cmd && $msgno;
35 $data = shift @f;
36
37 # get me message
38 my $ref = DXMsg::get($msgno);
39 return (1, $self->msg('m13', $msgno)) unless $ref;
40
41 my $old;
42 my $new;
43 my $m;
44 if ($cmd =~ /^to/i) {
45     $m = 'To';
46         $old = $ref->to;
47         $new = $ref->to(uc $data);
48 } elsif ($cmd =~ /^fr/i) {
49     $m = 'From';
50         $old = $ref->from;
51         $new = $ref->from(uc $data);
52 } elsif ($cmd =~ /^pr/i) {
53     $m = 'Msg Type';
54         $old = $ref->private ? 'P' : 'B';
55         $new = 'P';
56         $ref->private(1);
57 } elsif ($cmd =~ /^nop/i || $cmd =~ /^bu/i) {
58     $m = 'Msg Type';
59         $old = $ref->private ? 'P' : 'B';
60         $new = 'B';
61         $ref->private(0);
62 } elsif ($cmd =~ /^re/i) {
63     $m = 'Msg Type';
64         $old = $ref->read ? 'Read' : 'Unread';
65         $new = 'Read';
66         $ref->read(1);
67 } elsif ($cmd =~ /^(nore|unre)/i) {
68     $m = 'Msg Type';
69         $old = $ref->read ? 'Read' : 'Unread';
70         $new = 'Unread';
71         $ref->read(0);
72 } elsif ($cmd =~ /^rr/i) {
73     $m = 'RR Req';
74         $old = $ref->rrreq ? 'RR Req' : 'No RR Req';
75         $new = 'RR Req';
76         $ref->rrreq(1);
77 } elsif ($cmd =~ /^norr/i) {
78     $m = 'RR Req';
79         $old = $ref->rrreq ? 'RR Req' : 'No RR Req';
80         $new = 'No RR Req';
81         $ref->rrreq(0);
82 } elsif ($cmd =~ /^ke/i) {
83     $m = 'Keep';
84         $old = $ref->keep ? 'Keep' : 'No Keep';
85     $new = 'Keep';
86         $ref->keep(1);
87 } elsif ($cmd =~ /^noke/i) {
88     $m = 'Keep';
89         $old = $ref->keep ? 'Keep' : 'No Keep';
90     $new = 'No Keep';
91     $ref->keep(0);
92 } elsif ($cmd =~ /^node/i) {
93     $m = 'Delete';
94         $old = $ref->delete ? 'Delete' : 'Not Delete';
95     $new = 'Not Delete';
96     $ref->unmark_delete;
97 } elsif ($cmd =~ /^su/i) {
98     $m = 'Subject';
99     $old = $ref->subject;
100         $new = $ref->subject($data);
101 } elsif ($cmd =~ /^wa/i) {
102     $m = 'Wait Time';
103         $old = cldatetime($ref->waitt) || 'None';
104         $new = 'None'; 
105     $ref->waitt(0);
106 } else {
107         return (1, $self->msg('e15', $cmd));
108 }
109
110 # store changes and return      
111 $ref->store( [ $ref->read_msg_body() ] );
112 return(1, $self->msg('msg3', $msgno, $m, $old, $new));
113
114
115