/[notice-sender]/trunk/Nos.pm
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/Nos.pm

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

revision 78 by dpavlin, Thu Aug 25 00:56:06 2005 UTC revision 83 by dpavlin, Mon Aug 29 14:53:53 2005 UTC
# Line 709  sub inbox_message { Line 709  sub inbox_message {
709    
710  Returns all received messages for given list or user.  Returns all received messages for given list or user.
711    
712   my @received = $nos->received_message(   my @received = $nos->received_messages(
713          list => 'My list',          list => 'My list',
714          email => "john.doe@example.com",          email => "john.doe@example.com",
715            from_date => '2005-01-01 10:15:00',
716            to_date => '2005-01-01 12:00:00',
717            message => 0,
718   );   );
719    
720    If don't specify C<list> or C<email> it will return all received messages.
721    Results will be sorted by received date, oldest first.
722    
723    Other optional parametars include:
724    
725    =over 10
726    
727    =item from_date
728    
729    Date (in ISO format) for lower limit of dates received
730    
731    =item to_date
732    
733    Return just messages older than this date
734    
735    =item message
736    
737    Include whole received message in result. This will probably make result
738    array very large. Use with care.
739    
740    =back
741    
742    Date ranges are inclusive, so results will include messages sent on
743    particular date specified with C<date_from> or C<date_to>.
744    
745  Each element in returned array will have following structure:  Each element in returned array will have following structure:
746    
747   {   my $row = {
748          id => 42,                       # unique ID of received message          id => 42,                       # unique ID of received message
749          list => 'My list',              # useful if filtering by email          list => 'My list',              # useful if filtering by email
750          ext_id => 9999,                 # ext_id from message sender          ext_id => 9999,                 # ext_id from message sender
# Line 725  Each element in returned array will have Line 753  Each element in returned array will have
753          date => '2005-08-24 18:57:24',  # date of receival in ISO format          date => '2005-08-24 18:57:24',  # date of receival in ISO format
754   }   }
755    
756    If you specified C<message> option, this hash will also have C<message> key
757    which will contain whole received message.
758    
759  =cut  =cut
760    
# Line 741  sub received_messages { Line 771  sub received_messages {
771                                  lists.name as list,                                  lists.name as list,
772                                  users.ext_id as ext_id,                                  users.ext_id as ext_id,
773                                  users.email as email,                                  users.email as email,
774            };
775            $sql .= qq{             message,} if ($arg->{'message'});
776            $sql .= qq{
777                                  bounced,received.date as date                                  bounced,received.date as date
778                          from received                          from received
779                          join lists on lists.id = list_id                          join lists on lists.id = list_id
780                          join users on users.id = user_id                          join users on users.id = user_id
781          };          };
782    
783            my $order = qq{ order by date asc };
784    
785          my $where;          my $where;
786    
787          $where->{'lists.name'} = lc($arg->{'list'}) if ($arg->{'list'});          $where->{'lists.name'} = lc($arg->{'list'}) if ($arg->{'list'});
788          $where->{'users.email'} = lc($arg->{'email'}) if ($arg->{'email'});          $where->{'users.email'} = lc($arg->{'email'}) if ($arg->{'email'});
789            $where->{'received.date'} = { '>=', $arg->{'date_from'} } if ($arg->{'date_from'});
790            $where->{'received.date'} = { '<=', $arg->{'date_to'} } if ($arg->{'date_to'});
791    
792          # hum, yammy one-liner          # hum, yammy one-liner
793          my($stmt, @bind)  = SQL::Abstract->new->where($where);          my($stmt, @bind)  = SQL::Abstract->new->where($where);
794    
795          my $dbh = $self->{'loader'}->find_class('received')->db_Main;          my $dbh = $self->{'loader'}->find_class('received')->db_Main;
796    
797          my $sth = $dbh->prepare($sql . $stmt);          my $sth = $dbh->prepare($sql . $stmt . $order);
798          $sth->execute(@bind);          $sth->execute(@bind);
799          return $sth->fetchall_hash;          return $sth->fetchall_hash;
800  }  }
# Line 829  sub _add_aliases { Line 866  sub _add_aliases {
866          $self_path =~ s#/[^/]+$##;          $self_path =~ s#/[^/]+$##;
867          $self_path =~ s#/t/*$#/#;          $self_path =~ s#/t/*$#/#;
868    
869          $target .= qq#| cd $self_path && ./sender.pl --inbox="$list"#;          $target .= qq#"| cd $self_path && ./sender.pl --inbox='$list'"#;
870    
871            # remove hostname from email to make Postfix's postalias happy
872            $email =~ s/@.+//;
873    
874          if ($a->exists($email)) {          if ($a->exists($email)) {
875                  $a->update($email, $target) or croak "can't update alias ".$a->error_check;                  $a->update($email, $target) or croak "can't update alias ".$a->error_check;
# Line 1162  Return statistics about received message Line 1202  Return statistics about received message
1202   my @result = MessagesReceived(   my @result = MessagesReceived(
1203          list => 'My list',          list => 'My list',
1204          email => 'jdoe@example.com',          email => 'jdoe@example.com',
1205            from_date => '2005-01-01 10:15:00',
1206            to_date => '2005-01-01 12:00:00',
1207            message => 0,
1208   );   );
1209    
1210  You must specify C<list> or C<email> or any combination of those.  You must specify C<list> or C<email> or any combination of those two. Other
1211    parametars are optional.
1212    
1213  For format of returned array element see C<received_messages>.  For format of returned array element see C<received_messages>.
1214    
# Line 1174  sub MessagesReceived { Line 1218  sub MessagesReceived {
1218          my $self = shift;          my $self = shift;
1219    
1220          if ($_[0] !~ m/^HASH/) {          if ($_[0] !~ m/^HASH/) {
1221                  die "need both list and email" unless (scalar @_ < 2);                  die "need at least list or email" unless (scalar @_ < 2);
1222                  return $nos->received_messages(                  return $nos->received_messages(
1223                          list => $_[0], email => $_[1],                          list => $_[0], email => $_[1],
1224                            from_date => $_[2], to_date => $_[3],
1225                            message => $_[4]
1226                  );                  );
1227          } else {          } else {
1228                  my $arg = {@_};                  my $arg = shift;
1229                  die "need both list and email" unless ($arg->{'list'} && $arg->{'email'});                  die "need list or email argument" unless ($arg->{'list'} || $arg->{'email'});
1230                  return $nos->received_messages( $arg );                  return $nos->received_messages( %{ $arg } );
1231          }          }
1232  }  }
1233    
1234  ###  ###
1235    
 =head1 UNIMPLEMENTED SOAP FUNCTIONS  
   
 This is a stub for documentation of unimplemented functions.  
   
 =head2 MessagesReceivedByDate  
   
 =head2 MessagesReceivedByDateWithContent  
   
 =head2 ReceivedMessageContent  
   
 Return content of received message.  
   
  my $mail_body = ReceivedMessageContent( id => 42 );  
   
   
   
   
1236  =head1 NOTE ON ARRAYS IN SOAP  =head1 NOTE ON ARRAYS IN SOAP
1237    
1238  Returning arrays from SOAP calls is somewhat fuzzy (at least to me). It  Returning arrays from SOAP calls is somewhat fuzzy (at least to me). It

Legend:
Removed from v.78  
changed lines
  Added in v.83

  ViewVC Help
Powered by ViewVC 1.1.26