/[notice-sender]/trunk/sender.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/sender.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 13 by dpavlin, Sat May 14 20:54:40 2005 UTC revision 14 by dpavlin, Sun May 15 14:20:08 2005 UTC
# Line 5  use Class::DBI::Loader::Pg; Line 5  use Class::DBI::Loader::Pg;
5  use Getopt::Long;  use Getopt::Long;
6  use Mail::CheckUser qw(check_email);  use Mail::CheckUser qw(check_email);
7  use Email::Valid;  use Email::Valid;
8    use Email::Send;
9    
10  =head1 NAME  =head1 NAME
11    
# Line 14  sender.pl - command line notify sender u Line 15  sender.pl - command line notify sender u
15    
16   sender.pl --add=mylist members.txt   sender.pl --add=mylist members.txt
17   sender.pl --list[=mylist]   sender.pl --list[=mylist]
18   sender.pl --queue=mylist message.txt   sender.pl --queue[=mylist message.txt]
19   sender.pl --send=mylist   sender.pl --send=mylist
20    
21  =head2 All options  =head2 All options
# Line 31  my $debug = 0; Line 32  my $debug = 0;
32  my $list_opt;  my $list_opt;
33  my $add_opt;  my $add_opt;
34  my $queue_opt;  my $queue_opt;
35    my $send_opt;
36    
37  my $result = GetOptions(  my $result = GetOptions(
38          "list:s" => \$list_opt,          "list:s" => \$list_opt,
39          "add=s" => \$add_opt,          "add=s" => \$add_opt,
40          "queue=s" => \$queue_opt,          "queue:s" => \$queue_opt,
41            "send:s" => \$send_opt,
42          "debug" => \$debug,          "debug" => \$debug,
43  );  );
44    
# Line 57  my $user_list = $loader->find_class('use Line 60  my $user_list = $loader->find_class('use
60  my $messages = $loader->find_class('messages');  my $messages = $loader->find_class('messages');
61  my $queue = $loader->find_class('queue');  my $queue = $loader->find_class('queue');
62    
63    $queue->set_sql( list_queue => qq{
64            SELECT messages.message, messages.date AS message_date, lists.name AS list
65            FROM queue
66            JOIN messages on message_id = messages.id
67            JOIN lists on list_id = lists.id
68    } );
69    
70    
71  =item --list[=list_name]  =item --list[=list_name]
72    
73  List all available lists and users on them. Optional value is name of list  List all available lists and users on them.
74  and it will produce users just on that list.  
75    Optional value is name of list. With it, this option will produce just users
76    on that list.
77    
78  =cut  =cut
79    
# Line 125  argument) or read from C<STDIN>. List sh Line 138  argument) or read from C<STDIN>. List sh
138    
139          print "list ",$list->name," has $added users\n";          print "list ",$list->name," has $added users\n";
140    
141  =item --queue=list_name  =item --queue[=list_name]
142    
143  Queue message for later delivery. Message can be read from file (specified as  Queue message for later delivery. Message can be read from file (specified as
144  argument) or read from C<STDIN>.  argument) or read from C<STDIN>.
145    
146    This options without optional parametars it will display current queue.
147    
148  =cut  =cut
149    
150  } elsif ($queue_opt) {  } elsif (defined($queue_opt)) {
151          my $this_list = $lists->search(  
152                  name => $queue_opt,          if ($queue_opt ne '') {
153          )->first || die "can't find list $queue_opt";                  # add message to list queue
154    
155                    my $this_list = $lists->search(
156                            name => $queue_opt,
157                    )->first || die "can't find list $queue_opt";
158    
159                    my $message_text;
160                    while(<>) {
161                            $message_text .= $_;
162                    }
163    
164                    die "no message" unless ($message_text);
165    
166                    my $this_message = $messages->find_or_create({
167                            message => $message_text
168                    }) || die "can't insert message";
169    
170                    $this_message->dbi_commit() || die "can't add message";
171    
172                    $queue->find_or_create({
173                            message_id => $this_message->id,
174                            list_id => $this_list->id,
175                    }) || die "can't add message ",$this_message->id," to list ",$this_list->id, ": ",$this_list->name;
176    
177                    $queue->dbi_commit || die "can't add message to list ",$this_list->name;
178    
179                    print "added message ",$this_message->id, " to list ",$this_list->name,"\n";
180    
181            } else {
182                    # list messages in queue        
183    
184                    foreach my $m ($queue->retrieve_all) {
185                            my $l = sprintf("%-10s %15s : ", $m->list_id->name, $m->message_id->date);
186                            $l .= substr($m->message_id->message, 0, 79 - length($l));
187                            $l =~ s/[\n\r]/ /gs;
188                            print "$l\n";
189                    }
190    
         my $message_text;  
         while(<>) {  
                 $message_text .= $_;  
191          }          }
192    
193          die "no message" unless ($message_text);  =item --send[=list_name]
194    
195          my $this_message = $messages->find_or_create({  Send e-mail waiting in queue for all lists, or with optional argument for
196                  message => $message_text  just single list.
197          }) || die "can't insert message";  
198    =cut
199    
200    } elsif (defined($send_opt)) {
201    
         $this_message->dbi_commit();  
202    
203          $queue->find_or_create({          die "send option not yet implemented";
                 message_id => $this_message->id,  
                 list_id => $this_list->id,  
         }) || die "can't add message ",$this_message->id," to list ",$this_list->id, ": ",$this_list->name;  
204    
205          print "added message ",$this_message->id, " to list ",$this_list->name,"\n";          my @q;
206            if ($send_opt ne '') {
207    #               @q => $queue->search( name => 'foo' );
208            }
209            foreach my $q (@q) {
210                    
211            }
212    
213  } else  {  } else  {
214          die "see perldoc $0 for help";          die "see perldoc $0 for help";

Legend:
Removed from v.13  
changed lines
  Added in v.14

  ViewVC Help
Powered by ViewVC 1.1.26