diff options
author | dakkar <dakkar@thenautilus.net> | 2017-02-06 21:37:21 +0000 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2017-02-06 21:37:21 +0000 |
commit | 70356732191b6c40b95e6aec6b6a974303ac7d93 (patch) | |
tree | f9e745b330db631b6da644e56d23d36c586e879b /lib/Sietima/Role/SubscriberOnly/Moderate.pm | |
parent | POD for some roles (diff) | |
download | Sietima-70356732191b6c40b95e6aec6b6a974303ac7d93.tar.gz Sietima-70356732191b6c40b95e6aec6b6a974303ac7d93.tar.bz2 Sietima-70356732191b6c40b95e6aec6b6a974303ac7d93.zip |
more POD, factoring, better moderation-override
Diffstat (limited to 'lib/Sietima/Role/SubscriberOnly/Moderate.pm')
-rw-r--r-- | lib/Sietima/Role/SubscriberOnly/Moderate.pm | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/lib/Sietima/Role/SubscriberOnly/Moderate.pm b/lib/Sietima/Role/SubscriberOnly/Moderate.pm index 158d18a..0c56040 100644 --- a/lib/Sietima/Role/SubscriberOnly/Moderate.pm +++ b/lib/Sietima/Role/SubscriberOnly/Moderate.pm @@ -5,6 +5,36 @@ use Email::Stuffer; use Email::MIME; use namespace::clean; +=head1 NAME + +Sietima::Role::SubscriberOnly::Moderate - moderate messages from non-subscribers + +=head1 SYNOPSIS + + my $sietima = Sietima->with_traits('SubscribersOnly::Moderate')->new({ + %args, + admin => 'listmaster@example.com', + mail_store => { + class => 'Sietima::MailStore::FS', + root => '/tmp', + }, + }); + +=head1 DESCRIPTION + +A L<< C<Sietima> >> list with this role applied will accept incoming +emails coming from non-subscribers, and store it for moderation. Each +such email will be forwarded (as an attachment) to the list's admin. + +The admin will the be able to delete the message, or allow it. + +This is a "sub-role" of L<< +C<SubscribersOnly>|Sietima::Role::SubscriberOnly >>, L<< +C<WithMailStore>|Sietima::Role::WithMailStore >>, and L<< +C<WithAdmin>|Sietima::Role::WithAdmin >>. + +=cut + with 'Sietima::Role::SubscriberOnly', 'Sietima::Role::WithMailStore', 'Sietima::Role::WithAdmin'; @@ -30,8 +60,9 @@ sub munge_mail_from_non_subscriber ($self,$mail) { sub resume ($self,$mail_id) { my $mail = $self->mail_store->retrieve_by_id($mail_id); - local $Sietima::Role::SubscriberOnly::let_it_pass=1; - $self->handle_mail($mail); + $self->ignoring_subscriberonly( + sub($s) { $s->handle_mail($mail) }, + ); $self->mail_store->remove($mail_id); } |