X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Facct_snarf.pm;h=9816de965464f67168b1334e7b9f4c6bad28283b;hp=b4e88bfc92703455d926ab809db5c287606f76af;hb=aed8ec35ccb9cdeb7ea0cb6ff2946f9d83d582f6;hpb=2041a9143fac20b79ead4a1ae01224dedf5b27c2 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) =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