summaryrefslogtreecommitdiff
path: root/fml/lib/FML/Command/Admin/digest.pm
diff options
context:
space:
mode:
authorfukachan <fukachan>2002-11-23 13:12:47 +0000
committerfukachan <fukachan>2002-11-23 13:12:47 +0000
commitecfe7b73fd637300daf9fb28dc42de8d143d25ea (patch)
tree0f1801dc9ca635d21787b327fabac3f62adee218 /fml/lib/FML/Command/Admin/digest.pm
parentb9b240de88b9a8b6679961606aa1d36ff8408f57 (diff)
downloadfml8-ecfe7b73fd637300daf9fb28dc42de8d143d25ea.tar.gz
fml8-ecfe7b73fd637300daf9fb28dc42de8d143d25ea.tar.bz2
fml8-ecfe7b73fd637300daf9fb28dc42de8d143d25ea.zip
clean up
Diffstat (limited to 'fml/lib/FML/Command/Admin/digest.pm')
-rw-r--r--fml/lib/FML/Command/Admin/digest.pm177
1 files changed, 98 insertions, 79 deletions
diff --git a/fml/lib/FML/Command/Admin/digest.pm b/fml/lib/FML/Command/Admin/digest.pm
index 1f9e03eb..8519ff90 100644
--- a/fml/lib/FML/Command/Admin/digest.pm
+++ b/fml/lib/FML/Command/Admin/digest.pm
@@ -4,18 +4,18 @@
# All rights reserved. This program is free software; you can
# redistribute it and/or modify it under the same terms as Perl itself.
#
-# $FML$
+# $FML: digest.pm,v 1.1 2002/11/19 16:11:22 tmu Exp $
#
package FML::Command::Admin::digest;
use strict;
-use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
use Carp;
+use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD);
=head1 NAME
-FML::Command::Admin::digest - change on or off digest mode
+FML::Command::Admin::digest - toggle digest mode off/on
=head1 SYNOPSIS
@@ -23,7 +23,7 @@ See C<FML::Command> for more details.
=head1 DESCRIPTION
-change on or off digest mode address.
+change digest mode for the specified address to off/on.
=head1 METHODS
@@ -58,123 +58,142 @@ sub need_lock { 1;}
sub process
{
my ($self, $curproc, $command_args) = @_;
- my $config = $curproc->{ config };
+ my $config = $curproc->config();
+ my $options = $command_args->{ options } || [];
+ my $address = $command_args->{ command_data } || $options->[ 0 ] || undef;
+ my $mode = $options->[ 1 ] || '';
+
+ # maps
my $primary_recipient_map = $config->{ primary_recipient_map };
- my @recipient_map = split(/\s+/, $config->{ recipient_maps });
- my $digest_recipient_map = $config->{ digest_recipient_maps };
- my $options = $command_args->{ options };
- my $address = $command_args->{ command_data } || $options->[ 0 ];
- my $mode = $options->[ 1 ];
+ my $recipient_maps = $config->get_as_array_ref('recipient_maps');
+ my $digest_recipient_map = $config->{ primary_digest_recipient_map };
+ my $digest_recipient_maps =
+ $config->get_as_array_ref('digest_recipient_maps');
# fundamental check
- croak("address is not specified") unless defined $address;
- croak("\@recipient_map is not specified") unless @recipient_map;
-
- if ($mode eq "on") {
- $self->_on($curproc, $command_args);
+ croak("address is not specified") unless defined $address;
+ croak("primary_recipient_map not defined")
+ unless defined $primary_recipient_map;
+ croak("recipient_maps not defined") unless defined $recipient_maps;
+ croak("digest_recipient_map not defined")
+ unless defined $digest_recipient_map;
+ croak("digest_recipient_maps not definde")
+ unless defined $digest_recipient_maps;
+
+ my $digest_args = {
+ address => $address,
+ mode => $mode,
+ primary_recipient_map => $primary_recipient_map,
+ recipient_maps => $recipient_maps,
+ primary_digest_recipient_map => $digest_recipient_map,
+ digest_recipient_maps => $digest_recipient_maps,
+ };
+
+ if ($mode) {
+ $mode =~ tr/A-Z/a-z/;
+
+ if ($mode eq "on") {
+ $self->_digest_on($curproc, $command_args, $digest_args);
+ }
+ elsif ($mode eq "off") {
+ $self->_digest_off($curproc, $command_args, $digest_args);
+ }
+ else {
+ croak("unknown mode: mode is off or on");
+ }
}
- if ($mode eq "off") {
- $self->_off($curproc, $command_args);
+ else {
+ croak("specify mode: off or on");
}
}
+
# Descriptions: change to on mode
# Arguments: OBJ($self) OBJ($curproc) HASH_REF($command_args)
# Side Effects: update $recipient_map
-sub _on
+sub _digest_on
{
- my ($self, $curproc, $command_args) = @_;
- my $config = $curproc->{ config };
- my $primary_recipient_map = $config->{ primary_recipient_map };
- my @recipient_map = split(/\s+/, $config->{ recipient_maps });
- my $digest_recipient_map = $config->{ digest_recipient_maps };
- my $options = $command_args->{ options };
- my $address = $command_args->{ command_data } || $options->[ 0 ];
-
- # fundamental check
- croak("address is not specified") unless defined $address;
- croak("\@recipient_map is not specified") unless @recipient_map;
-
- # FML::Command::UserControl specific parameters
- # delete from normal recipient_map
- my $uc_args = {
+ my ($self, $curproc, $command_args, $dargs) = @_;
+ my $address = $dargs->{ address };
+ my $mode = $dargs->{ mode };
+ my $primary_recipient_map = $dargs->{ primary_recipient_map };
+ my $recipient_maps = $dargs->{ recipient_maps };
+ my $digest_recipient_map = $dargs->{ primary_digest_recipient_map };
+ my $digest_recipient_maps = $dargs->{ digest_recipient_maps };
+
+ # move $address from normal $recipient_maps to $digest_recipient_maps
+ my $uc_normal_args = {
address => $address,
- maplist => [ @recipient_map ],
- };
- my $r = '';
-
- eval q{
- use FML::Command::UserControl;
- my $obj = new FML::Command::UserControl;
- $obj->userdel($curproc, $command_args, $uc_args);
+ maplist => $recipient_maps,
};
- if ($r = $@) {
- croak($r);
- }
- # add from digest recipient_map
- $uc_args = {
+ my $uc_digest_args = {
address => $address,
maplist => [ $digest_recipient_map ],
};
- $r = '';
- eval q{
- use FML::Command::UserControl;
- my $obj = new FML::Command::UserControl;
- $obj->useradd($curproc, $command_args, $uc_args);
- };
- if ($r = $@) {
- croak($r);
- }
+ $self->_userdel($curproc, $command_args, $uc_normal_args);
+ $self->_useradd($curproc, $command_args, $uc_digest_args);
}
+
# Descriptions: change to off mode
# Arguments: OBJ($self) OBJ($curproc) HASH_REF($command_args)
# Side Effects: update $recipient_map
-sub _off
+sub _digest_off
{
- my ($self, $curproc, $command_args) = @_;
- my $config = $curproc->{ config };
- my $primary_recipient_map = $config->{ primary_recipient_map };
- my @recipient_map = split(/\s+/, $config->{ recipient_maps });
- my $digest_recipient_map = $config->{ digest_recipient_maps };
- my $options = $command_args->{ options };
- my $address = $command_args->{ command_data } || $options->[ 0 ];
-
- # fundamental check
- croak("address is not specified") unless defined $address;
- croak("\@recipient_map is not specified") unless @recipient_map;
+ my ($self, $curproc, $command_args, $dargs) = @_;
+ my $address = $dargs->{ address };
+ my $mode = $dargs->{ mode };
+ my $primary_recipient_map = $dargs->{ primary_recipient_map };
+ my $recipient_maps = $dargs->{ recipient_maps };
+ my $digest_recipient_map = $dargs->{ primary_digest_recipient_map };
+ my $digest_recipient_maps = $dargs->{ digest_recipient_maps };
+
+ # move $address from normal $digest_recipient_maps to $prmary_recipient_map
+ my $uc_normal_args = {
+ address => $address,
+ maplist => [ $primary_recipient_map ],
+ };
- # FML::Command::UserControl specific parameters
- # delete from digest recipient_map
- my $uc_args = {
+ my $uc_digest_args = {
address => $address,
- maplist => [ $digest_recipient_map ],
+ maplist => $digest_recipient_maps,
};
+
+ $self->_userdel($curproc, $command_args, $uc_digest_args);
+ $self->_useradd($curproc, $command_args, $uc_normal_args);
+}
+
+
+sub _useradd
+{
+ my ($self, $curproc, $command_args, $uc_args) = @_;
my $r = '';
eval q{
use FML::Command::UserControl;
my $obj = new FML::Command::UserControl;
- $obj->userdel($curproc, $command_args, $uc_args);
+ $obj->useradd($curproc, $command_args, $uc_args);
};
+
if ($r = $@) {
croak($r);
}
+}
- # add from normal recipient_map
- $uc_args = {
- address => $address,
- maplist => [ $primary_recipient_map ],
- };
- $r = '';
+
+sub _userdel
+{
+ my ($self, $curproc, $command_args, $uc_args) = @_;
+ my $r = '';
eval q{
use FML::Command::UserControl;
my $obj = new FML::Command::UserControl;
- $obj->useradd($curproc, $command_args, $uc_args);
+ $obj->userdel($curproc, $command_args, $uc_args);
};
+
if ($r = $@) {
croak($r);
}