/[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 77 by dpavlin, Thu Aug 25 00:37:48 2005 UTC revision 84 by dpavlin, Mon Aug 29 15:43:23 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 only of filtering by email          list => 'My list',              # useful if filtering by email
750          ext_id => 9999,                 # ext_id from message user          ext_id => 9999,                 # ext_id from message sender
751          email => 'jdoe@example.com',    # e-mail of user          email => 'jdoe@example.com',    # e-mail of message sender
752          bounced => 0,                   # true value if message is bounce          bounced => 0,                   # true if message is bounce
753          date => '2005-08-24 18:57:24',  # date of recival 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 1079  sub AddMemberToList { Line 1119  sub AddMemberToList {
1119    
1120          if ($_[0] !~ m/^HASH/) {          if ($_[0] !~ m/^HASH/) {
1121                  return $nos->add_member_to_list(                  return $nos->add_member_to_list(
1122                          list => $_[0], email => $_[1], name => $_[2], ext_id => $_[4],                          list => $_[0], email => $_[1], name => $_[2], ext_id => $_[3],
1123                  );                  );
1124          } else {          } else {
1125                  return $nos->add_member_to_list( %{ shift @_ } );                  return $nos->add_member_to_list( %{ shift @_ } );
# Line 1155  sub AddMessageToList { Line 1195  sub AddMessageToList {
1195          }          }
1196  }  }
1197    
 =head1 UNIMPLEMENTED FUNCTIONS  
   
 This is a stub for documentation of unimplemented functions.  
   
1198  =head2 MessagesReceived  =head2 MessagesReceived
1199    
1200    Return statistics about received messages.
1201    
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 can specify just 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    
 =head2 MessagesReceivedByDate  
   
 =head2 MessagesReceivedByDateWithContent  
   
 =head2 ReceivedMessasgeContent  
   
 Return content of received message.  
   
  my $mail_body = ReceivedMessageContent( id => 42 );  
   
1215  =cut  =cut
1216    
1217    sub MessagesReceived {
1218            my $self = shift;
1219    
1220            if ($_[0] !~ m/^HASH/) {
1221                    die "need at least list or email" unless (scalar @_ < 2);
1222                    return $nos->received_messages(
1223                            list => $_[0], email => $_[1],
1224                            from_date => $_[2], to_date => $_[3],
1225                            message => $_[4]
1226                    );
1227            } else {
1228                    my $arg = shift;
1229                    die "need list or email argument" unless ($arg->{'list'} || $arg->{'email'});
1230                    return $nos->received_messages( %{ $arg } );
1231            }
1232    }
1233    
1234  ###  ###
1235    

Legend:
Removed from v.77  
changed lines
  Added in v.84

  ViewVC Help
Powered by ViewVC 1.1.26