/[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 14 by dpavlin, Sun May 15 14:20:08 2005 UTC revision 15 by dpavlin, Sun May 15 16:25:01 2005 UTC
# Line 18  sender.pl - command line notify sender u Line 18  sender.pl - command line notify sender u
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 Command options
22    
23  =over 20  =over 20
24    
 =item --debug  
   
 Turn on debugging output from C<Class::DBI>  
   
25  =cut  =cut
26    
27  my $debug = 0;  my $debug = 0;
28    my $verbose = 0;
29  my $list_opt;  my $list_opt;
30  my $add_opt;  my $add_opt;
31  my $queue_opt;  my $queue_opt;
# Line 40  my $result = GetOptions( Line 37  my $result = GetOptions(
37          "queue:s" => \$queue_opt,          "queue:s" => \$queue_opt,
38          "send:s" => \$send_opt,          "send:s" => \$send_opt,
39          "debug" => \$debug,          "debug" => \$debug,
40            "verbose" => \$verbose,
41  );  );
42    
43    
# Line 59  my $users = $loader->find_class('users') Line 57  my $users = $loader->find_class('users')
57  my $user_list = $loader->find_class('user_list');  my $user_list = $loader->find_class('user_list');
58  my $messages = $loader->find_class('messages');  my $messages = $loader->find_class('messages');
59  my $queue = $loader->find_class('queue');  my $queue = $loader->find_class('queue');
60    my $sent = $loader->find_class('sent');
61    
62  $queue->set_sql( list_queue => qq{  $queue->set_sql( list_queue => qq{
63          SELECT messages.message, messages.date AS message_date, lists.name AS list          SELECT messages.message, messages.date AS date, lists.name AS list
64          FROM queue          FROM queue
65          JOIN messages on message_id = messages.id          JOIN messages on message_id = messages.id
66          JOIN lists on list_id = lists.id          JOIN lists on list_id = lists.id
# Line 115  argument) or read from C<STDIN>. List sh Line 114  argument) or read from C<STDIN>. List sh
114                  chomp;                  chomp;
115                  next if (/^#/ || /^\s*$/);                  next if (/^#/ || /^\s*$/);
116                  my ($email, $name) = split(/\s+/,$_, 2);                  my ($email, $name) = split(/\s+/,$_, 2);
117                    $name ||= '';
118                  if (! Email::Valid->address($email)) {                  if (! Email::Valid->address($email)) {
119                          print "SKIPPING $name <$email>\n";                          print "SKIPPING $name <$email>\n";
120                          next;                          next;
# Line 182  This options without optional parametars Line 182  This options without optional parametars
182                  # list messages in queue                          # list messages in queue        
183    
184                  foreach my $m ($queue->retrieve_all) {                  foreach my $m ($queue->retrieve_all) {
185                          my $l = sprintf("%-10s %15s : ", $m->list_id->name, $m->message_id->date);                          next if ($m->all_sent && ! $verbose);
186                          $l .= substr($m->message_id->message, 0, 79 - length($l));  
187                          $l =~ s/[\n\r]/ /gs;                          my $l = $m->all_sent ? 'S' : 'Q';
188    
189                            my $date = $m->message_id->date;
190                            $date =~ s/\..+$//;
191                            my $msg = $m->message_id->message;
192                            $msg =~ s/\s+/ /gs;
193    
194                            $l .= sprintf(" %-10s %15s : ", $m->list_id->name, $date);
195                            $l .= substr($msg, 0, 79 - length($l));
196    
197                          print "$l\n";                          print "$l\n";
198                  }                  }
199    
# Line 199  just single list. Line 208  just single list.
208    
209  } elsif (defined($send_opt)) {  } elsif (defined($send_opt)) {
210    
211            my $my_q;
         die "send option not yet implemented";  
   
         my @q;  
212          if ($send_opt ne '') {          if ($send_opt ne '') {
213  #               @q => $queue->search( name => 'foo' );                  my $l_id = $lists->search_like( name => $send_opt )->first ||
214                            die "can't find list $send_opt";
215                    $my_q = $queue->search_like( list_id => $l_id ) ||
216                            die "can't find list $send_opt";
217            } else {
218                    $my_q = $queue->retrieve_all;
219          }          }
220          foreach my $q (@q) {  
221                            while (my $m = $my_q->next) {
222                    next if ($m->all_sent);
223    
224                    print "sending message ",$m->message_id," enqueued on ",$m->date," to list ",$m->list_id->name,"\n";
225                    my $msg = $m->message_id->message;
226    
227                    foreach my $u ($user_list->search(list_id => $m->list_id)) {
228    
229                            my $hdr = "To: ".$u->user_id->full_name." <". $u->user_id->email. ">\n";
230    
231                            if ($sent->search( message_id => $m->message_id, user_id => $u->user_id )) {
232                                    print "SKIP ",$u->user_id->email," message allready sent\n";
233                            } else {
234                                    print "\t",$u->user_id->email,"\n";
235                                    send IO => "$hdr\n$msg";
236                                    $sent->create({
237                                            message_id => $m->message_id,
238                                            user_id => $u->user_id,
239                                    });
240                                    $sent->dbi_commit;
241                            }
242                    }
243                    $m->all_sent(1);
244                    $m->update;
245                    $m->dbi_commit;
246          }          }
247    
248  } else  {  } else  {
# Line 216  just single list. Line 251  just single list.
251    
252  =back  =back
253    
254    
255    
256    =head2 Helper options
257    
258    =over 20
259    
260    =item --debug
261    
262    Turn on debugging output from C<Class::DBI>
263    
264    =item --verbose
265    
266    Dump more info on screen.
267    
268    =back
269    
270    
271    
272  =head1 AUTHOR  =head1 AUTHOR
273    
274  Dobrica Pavlinusic <dpavlin@rot13.org>  Dobrica Pavlinusic <dpavlin@rot13.org>

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

  ViewVC Help
Powered by ViewVC 1.1.26