X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fcommunigate_pro.pm;h=9a4539a4ad04df3ec05615c1199d9e905aa19f69;hb=8e70e767b1fc7384d11d38246868d17ea0ec560e;hp=2370e31795d5a440465efdfef8b38702770f0cdd;hpb=c3544763d301a8f1bc2c1b5f4ea4c9b3543332d2;p=freeside.git diff --git a/FS/FS/part_export/communigate_pro.pm b/FS/FS/part_export/communigate_pro.pm index 2370e3179..9a4539a4a 100644 --- a/FS/FS/part_export/communigate_pro.pm +++ b/FS/FS/part_export/communigate_pro.pm @@ -10,15 +10,18 @@ sub rebless { shift; } sub _export_insert { my( $self, $svc_acct ) = (shift, shift); - $self->communigate_pro_queue( $svc_acct->svcnum, 'CreateAccount', + my @options = ( $svc_acct->svcnum, 'CreateAccount', 'accountName' => $svc_acct->email, 'accountType' => $self->option('accountType'), - 'externalFlag' => $self->option('externalFlag'), 'AccessModes' => $self->option('AccessModes'), 'RealName' => $svc_acct->finger, - 'MaxAccountSize' => $svc_acct->quota, 'Password' => $svc_acct->_password, ); + push @options, 'MaxAccountSize' => $svc_acct->quota if $svc_acct->quota; + push @options, 'externalFlag' => $self->option('externalFlag') + if $self->option('externalFlag'); + + $self->communigate_pro_queue( @options ); } sub _export_replace { @@ -36,6 +39,8 @@ sub _export_replace { || $old->finger ne $new->finger || $old->quota ne $new->quota; + return '' if '*SUSPENDED* '. $old->_password eq $new->_password; + #my $err_or_queue = $self->communigate_pro_queue( $new->svcnum,'RenameAccount', # $old->email, $new->email ); #return $err_or_queue unless ref($err_or_queue); @@ -54,17 +59,27 @@ sub _export_delete { ); } -#sub _export_suspend { -#} +sub _export_suspend { + my( $self, $svc_acct ) = (shift, shift); + $self->communigate_pro_queue( $svc_acct->svcnum, 'UpdateAccountSettings', + 'accountName' => $svc_acct->email, + 'AccessModes' => 'Mail', + ); +} -#sub _export_unsuspend { -#} +sub _export_unsuspend { + my( $self, $svc_acct ) = (shift, shift); + $self->communigate_pro_queue( $svc_acct->svcnum, 'UpdateAccountSettings', + 'accountName' => $svc_acct->email, + 'AccessModes' => $self->option('AccessModes'), + ); +} sub communigate_pro_queue { my( $self, $svcnum, $method ) = (shift, shift, shift); - my $sub = $method eq 'CreateAccount' - ? 'CreateAccount' - : 'communigate_pro_command'; + my @kludge_methods = qw(CreateAccount UpdateAccountSettings); + my $sub = 'communigate_pro_command'; + $sub = $method if grep { $method eq $_ } @kludge_methods; my $queue = new FS::queue { 'svcnum' => $svcnum, 'job' => "FS::part_export::communigate_pro::$sub", @@ -81,22 +96,30 @@ sub communigate_pro_queue { } sub CreateAccount { - my( $machine, $port, $login, $password, $method, @args ) = @_; - - my %args = @args; + my( $machine, $port, $login, $password, $method, %args ) = @_; my $accountName = delete $args{'accountName'}; my $accountType = delete $args{'accountType'}; my $externalFlag = delete $args{'externalFlag'}; $args{'AccessModes'} = [ split(' ', $args{'AccessModes'}) ]; - @args = ( accountName => $accountName, [ - settings => \%args, - accountType => $accountType, - externalFlag => $externalFlag, ] ); + my @args = ( accountName => $accountName, + accountType => $accountType, + settings => \%args, + ); + #externalFlag => $externalFlag, + push @args, externalFlag => $externalFlag if $externalFlag; communigate_pro_command( $machine, $port, $login, $password, $method, @args ); } +sub UpdateAccountSettings { + my( $machine, $port, $login, $password, $method, %args ) = @_; + my $accountName = delete $args{'accountName'}; + $args{'AccessModes'} = [ split(' ', $args{'AccessModes'}) ]; + @args = ( $accountName, \%args ); + communigate_pro_command( $machine, $port, $login, $password, $method, @args ); +} + sub communigate_pro_command { #subroutine, not method my( $machine, $port, $login, $password, $method, @args ) = @_;