--- trunk/Nos.pm 2005/08/02 18:28:57 69 +++ trunk/Nos.pm 2005/08/02 19:41:28 70 @@ -164,6 +164,7 @@ my $ok = delete_list( list => 'My list' + aliases => '/etc/mail/mylist', ); Returns false if list doesn't exist. @@ -179,10 +180,14 @@ $args->{'list'} = lc($args->{'list'}); + my $aliases = $args->{'aliases'} || croak "need path to aliases file"; + my $lists = $self->{'loader'}->find_class('lists'); my $this_list = $lists->search( name => $args->{'list'} )->first || return; + $self->_remove_alias( email => $this_list->email, aliases => $aliases); + $this_list->delete || croak "can't delete list\n"; return $lists->dbi_commit || croak "can't commit"; @@ -759,6 +764,8 @@ $a->append($email, $target) or croak "can't add alias ".$a->error_check; } + #$a->write($aliases) or croak "can't save aliases $aliases ".$a->error_check; + return 1; } @@ -841,6 +848,40 @@ return $lists->search({ name => lc($name) })->first; } + +=head2 _remove_alias + +Remove list alias + + my $ok = $nos->_remove_alias( + email => 'mylist@example.com', + aliases => '/etc/mail/mylist', + ); + +Returns true if list is removed or false if list doesn't exist. Dies in case of error. + +=cut + +sub _remove_alias { + my $self = shift; + + my $arg = {@_}; + + my $email = lc($arg->{'email'}) || confess "can't remove alias without email"; + my $aliases = lc($arg->{'aliases'}) || confess "can't remove alias without list"; + + my $a = new Mail::Alias($aliases) || croak "can't open aliases file $aliases: $!"; + + if ($a->exists($email)) { + $a->delete($email) || croak "can't remove alias $email"; + } else { + return 0; + } + + return 1; + +} + ### ### SOAP ### @@ -933,12 +974,15 @@ sub DeleteList { my $self = shift; + my $aliases = $nos->{'aliases'} || croak "need 'aliases' argument to new constructor"; + if ($_[0] !~ m/^HASH/) { return $nos->delete_list( list => $_[0], + aliases => $aliases, ); } else { - return $nos->delete_list( %{ shift @_ } ); + return $nos->delete_list( %{ shift @_ }, aliases => $aliases ); } }