16 |
our @EXPORT = qw( |
our @EXPORT = qw( |
17 |
); |
); |
18 |
|
|
19 |
our $VERSION = '0.8'; |
our $VERSION = '0.9_00'; |
20 |
|
|
|
use Class::DBI::Loader; |
|
21 |
use Email::Valid; |
use Email::Valid; |
22 |
use Email::Send; |
use Email::Send; |
23 |
use Carp; |
use Carp; |
25 |
use Email::Simple; |
use Email::Simple; |
26 |
use Email::Address; |
use Email::Address; |
27 |
use Mail::DeliveryStatus::BounceParser; |
use Mail::DeliveryStatus::BounceParser; |
|
use Class::DBI::AbstractSearch; |
|
|
use SQL::Abstract; |
|
28 |
use Mail::Alias; |
use Mail::Alias; |
29 |
use Cwd qw(abs_path); |
use Cwd qw(abs_path); |
30 |
|
|
31 |
|
use Jifty::DBI::Handle; |
32 |
|
use lib 'lib'; |
33 |
|
use Nos::Lists; |
34 |
|
|
35 |
|
|
36 |
=head1 NAME |
=head1 NAME |
37 |
|
|
108 |
my $self = {@_}; |
my $self = {@_}; |
109 |
bless($self, $class); |
bless($self, $class); |
110 |
|
|
111 |
croak "need at least dsn" unless ($self->{'dsn'}); |
croak "need at least dsn" unless ($self->{dsn}); |
112 |
|
|
113 |
|
my (undef,$driver,$dbname) = split(/:/, $self->{dsn}); |
114 |
|
$dbname =~ s!^dbname=!!; |
115 |
|
|
116 |
|
$self->{h} = Jifty::DBI::Handle->new(); |
117 |
|
$self->{h}->connect( |
118 |
|
driver => $driver, |
119 |
|
database => $dbname, |
120 |
|
host => 'localhost', |
121 |
|
user => $self->{user}, |
122 |
|
password => $self->{passwd}, |
123 |
|
); |
124 |
|
|
125 |
$self->{'loader'} = Class::DBI::Loader->new( |
$self->{'loader'} = Class::DBI::Loader->new( |
126 |
debug => $self->{'debug'}, |
debug => $self->{'debug'}, |
127 |
dsn => $self->{'dsn'}, |
dsn => $self->{'dsn'}, |
128 |
user => $self->{'user'}, |
user => $self->{'user'}, |
129 |
password => $self->{'passwd'}, |
password => $self->{'passwd'}, |
130 |
namespace => "Nos", |
namespace => "Nos", |
917 |
|
|
918 |
=cut |
=cut |
919 |
|
|
920 |
|
sub find_or_create { |
921 |
|
my $self = shift; |
922 |
|
my $obj = shift; |
923 |
|
my %args = {@_}; |
924 |
|
|
925 |
|
my ( $id, $msg ) = $obj->load_by_cols(%args); |
926 |
|
unless ( $obj->{values}->{id} ) { |
927 |
|
warn "find_or_CREATE(",dump( \%args ), ")"; |
928 |
|
return $obj->create(%args); |
929 |
|
} |
930 |
|
|
931 |
|
warn "FIND_or_create(",dump( \%args ), ") = $id"; |
932 |
|
return $id; |
933 |
|
} |
934 |
|
|
935 |
|
|
936 |
sub _add_list { |
sub _add_list { |
937 |
my $self = shift; |
my $self = shift; |
938 |
|
|
944 |
|
|
945 |
my $from_addr = $arg->{'from'}; |
my $from_addr = $arg->{'from'}; |
946 |
|
|
947 |
my $lists = $self->{'loader'}->find_class('lists'); |
my $lists = Nos::Lists->new( handle => $self->{h} ); |
948 |
|
|
949 |
$self->_add_aliases( |
$self->_add_aliases( |
950 |
list => $name, |
list => $name, |
952 |
aliases => $aliases, |
aliases => $aliases, |
953 |
) || warn "can't add alias $email for list $name"; |
) || warn "can't add alias $email for list $name"; |
954 |
|
|
955 |
my $l = $lists->find_or_create({ |
my $l = $self->find_or_create($lists, { |
956 |
name => $name, |
name => $name, |
957 |
email => $email, |
email => $email, |
958 |
}); |
}); |