summaryrefslogtreecommitdiff
path: root/FS/FS/acct_snarf.pm
diff options
context:
space:
mode:
Diffstat (limited to 'FS/FS/acct_snarf.pm')
-rw-r--r--FS/FS/acct_snarf.pm89
1 files changed, 88 insertions, 1 deletions
diff --git a/FS/FS/acct_snarf.pm b/FS/FS/acct_snarf.pm
index b4e88bfc9..9816de965 100644
--- a/FS/FS/acct_snarf.pm
+++ b/FS/FS/acct_snarf.pm
@@ -2,7 +2,9 @@ package FS::acct_snarf;
use strict;
use vars qw( @ISA );
-use FS::Record;
+use Tie::IxHash;
+use FS::Record qw( qsearchs );
+use FS::cust_svc;
@ISA = qw( FS::Record );
@@ -35,6 +37,8 @@ fields are currently supported:
=item snarfnum - primary key
+=item snarfname - Label
+
=item svcnum - Account (see L<FS::svc_acct>)
=item machine - external machine to download mail from
@@ -88,6 +92,37 @@ returns the error, otherwise returns false.
# the replace method can be inherited from FS::Record
+=item cust_svc
+
+=cut
+
+sub cust_svc {
+ my $self = shift;
+ qsearchs('cust_svc', { 'svcnum' => $self->svcnum } );
+}
+
+
+=item svc_export
+
+Calls the replace export for any communigate exports attached to this rule's
+service.
+
+=cut
+
+sub svc_export {
+ my $self = shift;
+
+ my $cust_svc = $self->cust_svc;
+ my $svc_x = $cust_svc->svc_x;
+
+ #_singledomain too
+ my @exports = $cust_svc->part_svc->part_export('communigate_pro');
+ my @errors = map $_->export_replace($svc_x, $svc_x), @exports;
+
+ @errors ? join(' / ', @errors) : '';
+
+}
+
=item check
Checks all fields to make sure this is a valid external mail account. If
@@ -100,11 +135,17 @@ sub check {
my $self = shift;
my $error =
$self->ut_numbern('snarfnum')
+ || $self->ut_textn('snarfname') #alphasn?
|| $self->ut_number('svcnum')
|| $self->ut_foreign_key('svcnum', 'svc_acct', 'svcnum')
|| $self->ut_domain('machine')
|| $self->ut_alphan('protocol')
|| $self->ut_textn('username')
+ || $self->ut_numbern('check_freq')
+ || $self->ut_enum('leavemail', [ '', 'Y' ])
+ || $self->ut_enum('apop', [ '', 'Y' ])
+ || $self->ut_enum('tls', [ '', 'Y' ])
+ || $self->ut_alphan('mailbox')
;
return $error if $error;
@@ -114,6 +155,52 @@ sub check {
''; #no error
}
+sub check_freq_labels {
+
+ tie my %hash, 'Tie::IxHash',
+ 0 => 'Never',
+ 60 => 'minute',
+ 120 => '2 minutes',
+ 180 => '3 minutes',
+ 300 => '5 minutes',
+ 600 => '10 minutes',
+ 900 => '15 minutes',
+ 1800 => '30 minutes',
+ 3600 => 'hour',
+ 7200 => '2 hours',
+ 10800 => '3 hours',
+ 21600 => '6 hours',
+ 43200 => '12 hours',
+ 86400 => 'day',
+ 172800 => '2 days',
+ 259200 => '3 days',
+ 604800 => 'week',
+ 1000000000 => 'Disabled',
+ ;
+
+ \%hash;
+}
+
+=item cgp_hashref
+
+Returns a hashref representing this external mail account, suitable for
+Communigate Pro API commands:
+
+=cut
+
+sub cgp_hashref {
+ my $self = shift;
+ {
+ 'authName' => $self->username,
+ 'domain' => $self->machine,
+ 'password' => $self->_password,
+ 'period' => $self->check_freq.'s',
+ 'APOP' => ( $self->apop eq 'Y' ? 'YES' : 'NO' ),
+ 'TLS' => ( $self->tls eq 'Y' ? 'YES' : 'NO' ),
+ 'Leave' => ( $self->leavemail eq 'Y' ? 'YES' : 'NO' ), #XXX leave??
+ };
+}
+
=back
=head1 BUGS