From 61ec626ec5e6493a16dcb9d4cabcd826f1306b5b Mon Sep 17 00:00:00 2001 From: ivan Date: Sun, 21 Feb 2010 09:19:05 +0000 Subject: [PATCH] communigate, RT#7083 --- FS/FS/Schema.pm | 4 ++- FS/FS/part_export/communigate_pro.pm | 57 ++++++++++++++++++++++++++++-------- FS/FS/svc_acct.pm | 17 ++++++++++- httemplate/edit/svc_acct.cgi | 27 +++++++++++++++++ httemplate/view/svc_acct/basics.html | 7 +++++ 5 files changed, 97 insertions(+), 15 deletions(-) diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 9847a987a..be8eb038f 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1641,7 +1641,9 @@ sub tables_hashref { 'password_selfchange','char', 'NULL', 1, '', '', 'password_recover', 'char', 'NULL', 1, '', '', 'cgp_type', 'varchar', 'NULL', $char_d, '', '', #AccountType - 'cgp_aliases', 'varchar', 'NULL', 255, '', '', #AccountType + 'cgp_aliases', 'varchar', 'NULL', 255, '', '', + 'cgp_deletemode', 'varchar', 'NULL', $char_d, '', '', #DeleteMode + 'cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '', #EmptyTrash ], 'primary_key' => 'svcnum', #'unique' => [ [ 'username', 'domsvc' ] ], diff --git a/FS/FS/part_export/communigate_pro.pm b/FS/FS/part_export/communigate_pro.pm index c31aea385..e07010b0b 100644 --- a/FS/FS/part_export/communigate_pro.pm +++ b/FS/FS/part_export/communigate_pro.pm @@ -78,10 +78,6 @@ sub _export_insert_svc_acct { map { $quotas{$_} => $svc_acct->$_() } grep $svc_acct->$_(), keys %quotas ); - - #XXX preferences phase 1: message delete method, on logout remove trash - #phase 2: language, time zone, layout, pronto style, send read receipts - #phase 2: pwdallowed, passwordrecovery, allowed mail rules, # RPOP modifications, accepts mail to all, add trailer to sent mail #phase 3: archive messages, mailing lists @@ -97,16 +93,36 @@ sub _export_insert_svc_acct { if $self->option('externalFlag'); #let's do the create realtime too, for much the same reasons, and to avoid - #pain of trying to queue w/dep the aliases + #pain of trying to queue w/dep the prefs & aliases #my $r= eval { $self->communigate_pro_runcommand( @options ) }; return $@ if $@; - my $err= $self->communigate_pro_queue( $svc_acct->svcnum, 'SetAccountAliases', - $self->export_username($svc_acct), - [ split(/\s*,\s*/, $svc_acct->cgp_aliases) ], - ); - warn "WARNING: error queueing SetAccountAliases job: $err" if $err; + #preferences + 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 + if ( keys %prefs ) { + my $pref_err = $self->communigate_pro_queue( $svc_acct->svcnum, + 'UpdateAccountPrefs', + $self->export_username($svc_acct), + %prefs, + ); + warn "WARNING: error queueing UpdateAccountPrefs job: $pref_err" + if $pref_err; + } + + #aliases + if ( $svc_acct->cgp_aliases ) { + my $alias_err = $self->communigate_pro_queue( $svc_acct->svcnum, + 'SetAccountAliases', + $self->export_username($svc_acct), + [ split(/\s*,\s*/, $svc_acct->cgp_aliases) ], + ); + warn "WARNING: error queueing SetAccountAliases job: $alias_err" + if $alias_err; + } ''; @@ -187,6 +203,23 @@ sub _export_replace_svc_acct { return $error if $error; } + #preferences + my %prefs = (); + $prefs{'DeleteMode'} = $new->cgp_deletemode + 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 + if ( keys %prefs ) { + my $pref_err = $self->communigate_pro_queue( $new->svcnum, + 'UpdateAccountPrefs', + $self->export_username($new), + %prefs, + ); + warn "WARNING: error queueing UpdateAccountPrefs job: $pref_err" + if $pref_err; + } + if ( $old->cgp_aliases ne $new->cgp_aliases ) { my $error = $self->communigate_pro_queue( $new->svcnum, @@ -197,9 +230,6 @@ sub _export_replace_svc_acct { return $error if $error; } - #XXX preferences phase 1: message delete method, on logout remove trash - #phase 2: language, time zone, layout, pronto style, send read receipts - ''; } @@ -467,6 +497,7 @@ sub communigate_pro_queue_dep { my %kludge_methods = ( 'CreateAccount' => 'CreateAccount', 'UpdateAccountSettings' => 'UpdateAccountSettings', + 'UpdateAccountPrefs' => 'cp_Scalar_Hash', 'CreateDomain' => 'cp_Scalar_Hash', 'CreateSharedDomain' => 'cp_Scalar_Hash', 'UpdateDomainSettings' => 'UpdateDomainSettings', diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index 54d443c80..2887e28c7 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -274,7 +274,7 @@ sub table_info { 'cgp_type'=> { label => 'Communigate account type', type => 'select', - select_list => [ ], + select_list => [qw( MultiMailbox TextMailbox MailDirMailbox AGrade BGrade CGrade )], disable_inventory => 1, disable_select => 1, }, @@ -284,6 +284,19 @@ sub table_info { disable_inventory => 1, disable_select => 1, }, + 'cgp_deletemode' => { + label => 'Communigate message delete method', + type => 'select', + select_list => [ 'Move To Trash', 'Immediately', 'Mark' ], + disable_inventory => 1, + disable_select => 1, + }, + 'cgp_emptytrash' => { + label => 'Communigate on logout remove trash', + type => 'text', + disable_inventory => 1, + disable_select => 1, + }, 'quota' => { label => 'Quota', #Mail storage limit type => 'text', @@ -1101,6 +1114,8 @@ sub check { || $self->ut_textn( 'cgp_accessmodes' ) || $self->ut_alphan( 'cgp_type' ) || $self->ut_textn( 'cgp_aliases' ) #well + || $self->ut_alphasn( 'cgp_deletemode' ) + || $self->ut_alphan( 'cgp_emptytrash' ) ; return $error if $error; diff --git a/httemplate/edit/svc_acct.cgi b/httemplate/edit/svc_acct.cgi index f44147ff4..c842b1b57 100755 --- a/httemplate/edit/svc_acct.cgi +++ b/httemplate/edit/svc_acct.cgi @@ -328,6 +328,33 @@ Service # <% $svcnum ? "$svcnum" : " (NEW)" %>
% } % } +% if ( $communigate ) { + + + Message delete method + + + + + + + On logout remove trash + + + +% } else { + + + + +% } + % if ( $part_svc->part_svc_column('slipip')->columnflag =~ /^[FA]$/ ) { diff --git a/httemplate/view/svc_acct/basics.html b/httemplate/view/svc_acct/basics.html index 2b05e78a6..0159a7ed0 100644 --- a/httemplate/view/svc_acct/basics.html +++ b/httemplate/view/svc_acct/basics.html @@ -85,6 +85,13 @@ <% include('tr.html', label=>'File size limit', value=>$svc_acct->file_maxsize ) %> + <% include('tr.html', label=>'Message delete method', + value=>$svc_acct->cgp_deletemode ) %> + + <% include('tr.html', label=>'On logout remove trash', + value=>$svc_acct->cgp_emptytrash ) %> + + % } % if ($svc_acct->slipip) { -- 2.11.0