X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fcommunigate_pro.pm;h=42f562c2b2101b1da73227efde9fbf55823bef70;hb=af822b448b22bc49c1f149a54ba90f643faddaf8;hp=b94eaf66dd96a45bb14614059f031886050011db;hpb=a0e1759e5c4300aa48bd137f8e5cbb4aa0e36778;p=freeside.git diff --git a/FS/FS/part_export/communigate_pro.pm b/FS/FS/part_export/communigate_pro.pm index b94eaf66d..42f562c2b 100644 --- a/FS/FS/part_export/communigate_pro.pm +++ b/FS/FS/part_export/communigate_pro.pm @@ -78,7 +78,8 @@ sub _export_insert_svc_acct { 'RealName' => $svc_acct->finger, 'Password' => $svc_acct->_password, - #phase 2: allowed mail rules, RPOP modifications, accepts mail to all, add trailer to sent mail + 'PasswordRecovery' => ($svc_acct->password_recover ? 'YES':'NO'), + 'RulesAllowed' => $svc_acct->cgp_rulesallowed, 'RPOPAllowed' =>($svc_acct->cgp_rpopallowed ?'YES':'NO'), 'MailToAll' =>($svc_acct->cgp_mailtoall ?'YES':'NO'), @@ -87,7 +88,6 @@ sub _export_insert_svc_acct { map { $quotas{$_} => $svc_acct->$_() } grep $svc_acct->$_(), keys %quotas ); - #XXX phase 2: pwdallowed, passwordrecovery #XXX phase 3: archive messages, mailing lists my @options = ( 'CreateAccount', @@ -109,7 +109,11 @@ sub _export_insert_svc_acct { my %prefs = (); $prefs{'DeleteMode'} = $svc_acct->cgp_deletemode if $svc_acct->cgp_deletemode; $prefs{'EmptyTrash'} = $svc_acct->cgp_emptytrash if $svc_acct->cgp_emptytrash; - #phase 2: language, time zone, layout, pronto style, send read receipts + $prefs{'Language'} = $svc_acct->cgp_language if $svc_acct->cgp_language; + $prefs{'TimeZone'} = $svc_acct->cgp_timezone if $svc_acct->cgp_timezone; + $prefs{'SkinName'} = $svc_acct->cgp_skinname if $svc_acct->cgp_skinname; + $prefs{'ProntoSkinName'} = $svc_acct->cgp_prontoskinname if $svc_acct->cgp_prontoskinname; + $prefs{'SendMDNMode'} = $svc_acct->cgp_sendmdnmode if $svc_acct->cgp_sendmdnmode; if ( keys %prefs ) { my $pref_err = $self->communigate_pro_queue( $svc_acct->svcnum, 'UpdateAccountPrefs', @@ -131,6 +135,15 @@ sub _export_insert_svc_acct { if $alias_err; } + my $rule_error = $self->communigate_pro_queue( + $svc_acct->svcnum, + 'SetAccountMailRules', + $self->export_username($svc_acct), + $svc_acct->cgp_rule_arrayref, + ); + warn "WARNING: error queueing SetAccountMailRules job: $rule_error" + if $rule_error; + ''; } @@ -189,12 +202,26 @@ sub _export_insert_svc_domain { my $pref_err = $self->communigate_pro_queue( $svc_domain->svcnum, 'SetAccountDefaultPrefs', $svc_domain->domain, - 'DeleteMode' => $svc_domain->acct_def_cgp_deletemode, - 'EmptyTrash' => $svc_domain->acct_def_cgp_emptytrash, + 'DeleteMode' => $svc_domain->acct_def_cgp_deletemode, + 'EmptyTrash' => $svc_domain->acct_def_cgp_emptytrash, + 'Language' => $svc_domain->acct_def_cgp_language, + 'TimeZone' => $svc_domain->acct_def_cgp_timezone, + 'SkinName' => $svc_domain->acct_def_cgp_skinname, + 'ProntoSkinName' => $svc_domain->acct_def_cgp_prontoskinname, + 'SendMDNMode' => $svc_domain->acct_def_cgp_sendmdnmode, ); warn "WARNING: error queueing SetAccountDefaultPrefs job: $pref_err" if $pref_err; + my $rule_error = $self->communigate_pro_queue( + $svc_domain->svcnum, + 'SetDomainMailRules', + $svc_domain->domain, + $svc_domain->cgp_rule_arrayref, + ); + warn "WARNING: error queueing SetDomainMailRules job: $rule_error" + if $rule_error; + ''; } @@ -280,17 +307,18 @@ sub _export_replace_svc_acct { if $old->cgp_accessmodes ne $new->cgp_accessmodes || $old->cgp_type ne $new->cgp_type; - #phase 2: allowed mail rules, RPOP modifications, accepts mail to all, add trailer to sent mail + $settings{'PasswordRecovery'} = ( $new->password_recover ? 'YES':'NO' ) + if $old->password_recover ne $new->password_recover; + $settings{'RulesAllowed'} = $new->cgp_rulesallowed if $old->cgp_rulesallowed ne $new->cgp_rulesallowed; - $settings{'RPOPAllowed'} = $new->cgp_rpopallowed + $settings{'RPOPAllowed'} = ( $new->cgp_rpopallowed ? 'YES':'NO' ) if $old->cgp_rpopallowed ne $new->cgp_rpopallowed; - $settings{'MailToAll'} = $new->cgp_mailtoall + $settings{'MailToAll'} = ( $new->cgp_mailtoall ? 'YES':'NO' ) if $old->cgp_mailtoall ne $new->cgp_mailtoall; - $settings{'AddMailTrailer'} = $new->cgp_addmailtrailer + $settings{'AddMailTrailer'} = ( $new->cgp_addmailtrailer ? 'YES':'NO' ) if $old->cgp_addmailtrailer ne $new->cgp_addmailtrailer; - #XXX phase 2: pwdallowed, passwordrecovery #XXX phase 3: archive messages, mailing lists if ( keys %settings ) { @@ -309,7 +337,16 @@ sub _export_replace_svc_acct { if $old->cgp_deletemode ne $new->cgp_deletemode; $prefs{'EmptyTrash'} = $new->cgp_emptytrash if $old->cgp_emptytrash ne $new->cgp_emptytrash; - #phase 2: language, time zone, layout, pronto style, send read receipts + $prefs{'Language'} = $new->cgp_language + if $old->cgp_language ne $new->cgp_language; + $prefs{'TimeZone'} = $new->cgp_timezone + if $old->cgp_timezone ne $new->cgp_timezone; + $prefs{'SkinName'} = $new->cgp_skinname + if $old->cgp_skinname ne $new->cgp_skinname; + $prefs{'ProntoSkinName'} = $new->cgp_prontoskinname + if $old->cgp_prontoskinname ne $new->cgp_prontoskinname; + $prefs{'SendMDNMode'} = $new->cgp_sendmdnmode + if $old->cgp_sendmdnmode ne $new->cgp_sendmdnmode; if ( keys %prefs ) { my $pref_err = $self->communigate_pro_queue( $new->svcnum, 'UpdateAccountPrefs', @@ -330,6 +367,15 @@ sub _export_replace_svc_acct { return $error if $error; } + my $rule_error = $self->communigate_pro_queue( + $new->svcnum, + 'SetAccountMailRules', + $self->export_username($new), + $new->cgp_rule_arrayref, + ); + warn "WARNING: error queueing SetAccountMailRules job: $rule_error" + if $rule_error; + ''; } @@ -337,12 +383,16 @@ sub _export_replace_svc_acct { sub _export_replace_svc_domain { my( $self, $new, $old ) = (shift, shift, shift); + #let's just do the rename part realtime rather than trying to queue + #w/dependencies. we don't want FS winding up out-of-sync with the wrong + #username and a queued job anyway. right?? if ( $old->domain ne $new->domain ) { - my $error = $self->communigate_pro_queue( $new->svcnum, 'RenameDomain', - $old->domain, $new->domain, - ); - return $error if $error; + eval { $self->communigate_pro_runcommand( + 'RenameDomain', $old->domain, $new->domain, + ) }; + return $@ if $@; } + my %settings = (); $settings{'AccountsLimit'} = $new->max_accounts if $old->max_accounts ne $new->max_accounts; @@ -399,12 +449,26 @@ sub _export_replace_svc_domain { my $pref_err = $self->communigate_pro_queue( $new->svcnum, 'SetAccountDefaultPrefs', $new->domain, - 'DeleteMode' => $new->acct_def_cgp_deletemode, - 'EmptyTrash' => $new->acct_def_cgp_emptytrash, + 'DeleteMode' => $new->acct_def_cgp_deletemode, + 'EmptyTrash' => $new->acct_def_cgp_emptytrash, + 'Language' => $new->acct_def_cgp_language, + 'TimeZone' => $new->acct_def_cgp_timezone, + 'SkinName' => $new->acct_def_cgp_skinname, + 'ProntoSkinName' => $new->acct_def_cgp_prontoskinname, + 'SendMDNMode' => $new->acct_def_cgp_sendmdnmode, ); warn "WARNING: error queueing SetAccountDefaultPrefs job: $pref_err" if $pref_err; + my $rule_error = $self->communigate_pro_queue( + $new->svcnum, + 'SetDomainMailRules', + $new->domain, + $new->cgp_rule_arrayref, + ); + warn "WARNING: error queueing SetDomainMailRules job: $rule_error" + if $rule_error; + ''; } @@ -631,24 +695,11 @@ sub export_getsettings_svc_domain { ) }; return $@ if $@; - %$effective_settings = ( - %$effective_settings, - ( map { ("Acct. Default $_" => $acct_defaults->{$_}); } - keys(%$acct_defaults) - ), - ( map { ("Acct. Default $_" => $acct_defaultprefs->{$_}); } #diff label?? - keys(%$acct_defaultprefs) - ), - ); - %$settings = ( - %$settings, - ( map { ("Acct. Default $_" => $acct_defaults->{$_}); } - keys(%$acct_defaults) - ), - ( map { ("Acct. Default $_" => $acct_defaultprefs->{$_}); } #diff label?? - keys(%$acct_defaultprefs) - ), - ); + my $rules = eval { $self->communigate_pro_runcommand( + 'GetDomainMailRules', + $svc_domain->domain + ) }; + return $@ if $@; #aliases too my $aliases = eval { $self->communigate_pro_runcommand( @@ -657,9 +708,19 @@ sub export_getsettings_svc_domain { ) }; return $@ if $@; - $effective_settings->{'Aliases'} = join(', ', @$aliases); - $settings->{'Aliases'} = join(', ', @$aliases); + my %more = ( + ( map { ("Acct. Default $_" => $acct_defaults->{$_}); } + keys(%$acct_defaults) + ), + ( map { ("Acct. Default $_" => $acct_defaultprefs->{$_}); } #diff label?? + keys(%$acct_defaultprefs) + ), + ( map _rule2string($_), @$rules ), + 'Aliases' => join(', ', @$aliases), + ); + %$effective_settings = ( %$effective_settings, %more ); + %$settings = ( %$settings, %more ); #false laziness w/below @@ -726,8 +787,21 @@ sub export_getsettings_svc_acct { keys(%$prefs) ); - #aliases too + #mail rules + my $rules = eval { $self->communigate_pro_runcommand( + 'GetAccountMailRules', + $svc_acct->email + ) }; + return $@ if $@; + %$effective_settings = ( %$effective_settings, + map _rule2string($_), @$rules + ); + %$settings = ( %$settings, + map _rule2string($_), @$rules + ); + + #aliases too my $aliases = eval { $self->communigate_pro_runcommand( 'GetAccountAliases', $svc_acct->email @@ -761,6 +835,14 @@ sub export_getsettings_svc_acct { } +sub _rule2string { + my $rule = shift; + my($priority, $name, $conditions, $actions, $comment) = @$rule; + $conditions = join(', ', map { my $a = $_; join(' ', @$a); } @$conditions); + $actions = join(', ', map { my $a = $_; join(' ', @$a); } @$actions); + ("Mail rule $name" => "$priority IF $conditions THEN $actions ($comment)"); +} + sub export_getsettings_svc_mailinglist { my($self, $svc_mailinglist, $settingsref, $defaultref ) = @_;