aboutsummaryrefslogtreecommitdiff
path: root/lib/Sietima/Role/SubscriberOnly/Moderate.pm
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2017-02-06 21:37:21 +0000
committerdakkar <dakkar@thenautilus.net>2017-02-06 21:37:21 +0000
commit70356732191b6c40b95e6aec6b6a974303ac7d93 (patch)
treef9e745b330db631b6da644e56d23d36c586e879b /lib/Sietima/Role/SubscriberOnly/Moderate.pm
parentPOD for some roles (diff)
downloadSietima-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.pm35
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);
}