--- trunk/Nos.pm 2005/08/24 22:11:00 76 +++ trunk/Nos.pm 2005/08/25 00:37:48 77 @@ -27,6 +27,7 @@ use Email::Address; use Mail::DeliveryStatus::BounceParser; use Class::DBI::AbstractSearch; +use SQL::Abstract; use Mail::Alias; use Cwd qw(abs_path); @@ -116,20 +117,6 @@ $self->{'hash_len'} ||= 8; - $self->{'loader'}->find_class('received')->set_sql( - 'received' => qq{ - select - received.id as id, - lists.name as list, - users.ext_id as ext_id, - users.email as email, - bounced,received.date as date - from received - join lists on lists.id = list_id - join users on users.id = user_id - }, - ); - $self ? return $self : return undef; } @@ -744,17 +731,34 @@ sub received_messages { my $self = shift; - my $arg = {@_}; + my $arg = {@_} if (@_); - croak "need list name or email" unless ($arg->{'list'} || $arg->{'email'}); +# croak "need list name or email" unless ($arg->{'list'} || $arg->{'email'}); - $arg->{'list'} = lc($arg->{'list'}); - $arg->{'email'} = lc($arg->{'email'}); + my $sql = qq{ + select + received.id as id, + lists.name as list, + users.ext_id as ext_id, + users.email as email, + bounced,received.date as date + from received + join lists on lists.id = list_id + join users on users.id = user_id + }; + + my $where; + + $where->{'lists.name'} = lc($arg->{'list'}) if ($arg->{'list'}); + $where->{'users.email'} = lc($arg->{'email'}) if ($arg->{'email'}); + + # hum, yammy one-liner + my($stmt, @bind) = SQL::Abstract->new->where($where); - my @out; + my $dbh = $self->{'loader'}->find_class('received')->db_Main; - my $sth = $self->{'loader'}->find_class('received')->sql_received; - $sth->execute(); + my $sth = $dbh->prepare($sql . $stmt); + $sth->execute(@bind); return $sth->fetchall_hash; }