From 732f3ef0612214fa441dc78e71e5aadc584802dd Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 6 Aug 2010 21:28:03 +0000 Subject: [PATCH] communigate phase 3: archive messages, RT#7515 --- FS/FS/Schema.pm | 8 +++----- FS/FS/part_export/communigate_pro.pm | 10 ++++++++-- FS/FS/svc_acct.pm | 26 +++++++++++++++++++++++--- FS/FS/svc_domain.pm | 24 ++++++++++++++++++++++-- httemplate/edit/part_svc.cgi | 12 +++++++++++- 5 files changed, 67 insertions(+), 13 deletions(-) diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 4509b096c..e8492ca03 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1533,7 +1533,8 @@ sub tables_hashref { 'cgp_rpopallowed', 'char', 'NULL', 1, '', '', #RPOPAllowed 'cgp_mailtoall', 'char', 'NULL', 1, '', '', #MailToAll 'cgp_addmailtrailer', 'char', 'NULL', 1, '', '', #AddMailTrailer - #XXX archive messages, mailing lists + 'cgp_archiveafter', 'int', 'NULL', '', '', '', #ArchiveMessagesAfter + #XXX mailing lists #preferences 'cgp_deletemode', 'varchar', 'NULL', $char_d, '', '',#DeleteMode 'cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '',#EmptyTrash @@ -1543,7 +1544,6 @@ sub tables_hashref { 'cgp_prontoskinname', 'varchar', 'NULL', $char_d, '', '',#ProntoSkinName 'cgp_sendmdnmode', 'varchar', 'NULL', $char_d, '', '',#SendMDNMode #mail -#vacation message, redirect all mail, mail rules #XXX RPOP settings ], 'primary_key' => 'svcnum', @@ -1605,7 +1605,7 @@ sub tables_hashref { 'acct_def_cgp_rpopallowed', 'char', 'NULL', 1, '', '', 'acct_def_cgp_mailtoall', 'char', 'NULL', 1, '', '', 'acct_def_cgp_addmailtrailer', 'char', 'NULL', 1, '', '', - #XXX archive messages + 'acct_def_cgp_archiveafter', 'int', 'NULL', '', '', '', #preferences 'acct_def_cgp_deletemode', 'varchar', 'NULL', $char_d, '', '', 'acct_def_cgp_emptytrash', 'varchar', 'NULL', $char_d, '', '', @@ -1614,8 +1614,6 @@ sub tables_hashref { 'acct_def_cgp_skinname', 'varchar', 'NULL', $char_d, '', '', 'acct_def_cgp_prontoskinname', 'varchar', 'NULL', $char_d, '', '', 'acct_def_cgp_sendmdnmode', 'varchar', 'NULL', $char_d, '', '', - #mail - #XXX rules, archive rule, spam foldering rule(s) ], 'primary_key' => 'svcnum', 'unique' => [ ], diff --git a/FS/FS/part_export/communigate_pro.pm b/FS/FS/part_export/communigate_pro.pm index 2cad24467..3e1213e84 100644 --- a/FS/FS/part_export/communigate_pro.pm +++ b/FS/FS/part_export/communigate_pro.pm @@ -85,10 +85,12 @@ sub _export_insert_svc_acct { 'MailToAll' =>($svc_acct->cgp_mailtoall ?'YES':'NO'), 'AddMailTrailer' =>($svc_acct->cgp_addmailtrailer ?'YES':'NO'), + 'ArchiveMessagesAfter' => $svc_acct->cgp_archiveafter, + map { $quotas{$_} => $svc_acct->$_() } grep $svc_acct->$_(), keys %quotas ); - #XXX phase 3: archive messages, mailing lists + #XXX phase 3: mailing lists my @options = ( 'CreateAccount', 'accountName' => $self->export_username($svc_acct), @@ -194,6 +196,7 @@ sub _export_insert_svc_domain { 'RPOPAllowed' =>($svc_domain->acct_def_cgp_rpopallowed ?'YES':'NO'), 'MailToAll' =>($svc_domain->acct_def_cgp_mailtoall ?'YES':'NO'), 'AddMailTrailer' =>($svc_domain->acct_def_cgp_addmailtrailer ?'YES':'NO'), + 'ArchiveMessagesAfter' => $svc_domain->acct_def_cgp_archiveafter, ); warn "WARNING: error queueing SetAccountDefaults job: $def_err" if $def_err; @@ -318,8 +321,10 @@ sub _export_replace_svc_acct { if $old->cgp_mailtoall ne $new->cgp_mailtoall; $settings{'AddMailTrailer'} = ( $new->cgp_addmailtrailer ? 'YES':'NO' ) if $old->cgp_addmailtrailer ne $new->cgp_addmailtrailer; + $settings{'ArchiveMessagesAfter'} = $new->cgp_archiveafter + if $old->cgp_archiveafter ne $new->cgp_archiveafter; - #XXX phase 3: archive messages, mailing lists + #XXX phase 3: mailing lists if ( keys %settings ) { my $error = $self->communigate_pro_queue( @@ -441,6 +446,7 @@ sub _export_replace_svc_domain { 'RPOPAllowed' => ( $new->acct_def_cgp_rpopallowed ? 'YES' : 'NO' ), 'MailToAll' => ( $new->acct_def_cgp_mailtoall ? 'YES' : 'NO' ), 'AddMailTrailer' => ( $new->acct_def_cgp_addmailtrailer ? 'YES' : 'NO' ), + 'ArchiveMessagesAfter' => $new->acct_def_cgp_archiveafter, ); warn "WARNING: error queueing SetAccountDefaults job: $def_err" if $def_err; diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index 3b26688bf..707b33a6f 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -440,7 +440,28 @@ sub table_info { 'cgp_addmailtrailer' => { label => 'Add trailer to sent mail', type => 'checkbox', }, - #XXX archive messages, mailing lists + 'cgp_archiveafter' => { + label => 'Archive messages after', + type => 'select', + select_hash => [ + -2 => 'default(730 day(s))', + 0 => 'Never', + 86400 => '24 hour(s)', + 172800 => '2 day(s)', + 259200 => '3 day(s)', + 432000 => '5 day(s)', + 604800 => '7 day(s)', + 1209600 => '2 week(s)', + 2592000 => '30 day(s)', + 7776000 => '90 day(s)', + 15552000 => '180 day(s)', + 31536000 => '365 day(s)', + 63072000 => '730 day(s)', + ], + disable_inventory => 1, + disable_select => 1, + }, + #XXX mailing lists #preferences 'cgp_deletemode' => { @@ -494,7 +515,6 @@ sub table_info { }, #mail - #XXX vacation message, redirect all mail, mail rules #XXX RPOP settings }, @@ -1190,6 +1210,7 @@ sub check { || $self->ut_enum('cgp_rpopallowed', [ '', 'Y' ]) || $self->ut_enum('cgp_mailtoall', [ '', 'Y' ]) || $self->ut_enum('cgp_addmailtrailer', [ '', 'Y' ]) + || $self->ut_snumbern('cgp_archiveafter') #preferences || $self->ut_alphasn('cgp_deletemode') || $self->ut_enum('cgp_emptytrash', $self->cgp_emptytrash_values) @@ -1198,7 +1219,6 @@ sub check { || $self->ut_textn('cgp_skinname') || $self->ut_textn('cgp_prontoskinname') || $self->ut_alphan('cgp_sendmdnmode') - #XXX vacation message, redirect all mail, mail rules #XXX RPOP settings ; return $error if $error; diff --git a/FS/FS/svc_domain.pm b/FS/FS/svc_domain.pm index 4d85060d3..3dc352b7a 100644 --- a/FS/FS/svc_domain.pm +++ b/FS/FS/svc_domain.pm @@ -207,6 +207,27 @@ sub table_info { label => 'Acct. default Add trailer to sent mail', type => 'checkbox', }, + 'acct_def_cgp_archiveafter' => { + label => 'Archive messages after', + type => 'select', + select_hash => [ + -2 => 'default(730 days)', + 0 => 'Never', + 86400 => '24 hours', + 172800 => '2 days', + 259200 => '3 days', + 432000 => '5 days', + 604800 => '7 days', + 1209600 => '2 weeks', + 2592000 => '30 days', + 7776000 => '90 days', + 15552000 => '180 days', + 31536000 => '365 days', + 63072000 => '730 days', + ], + disable_inventory => 1, + disable_select => 1, + }, 'trailer' => { label => 'Mail trailer', type => 'textarea', @@ -490,7 +511,7 @@ sub check { || $self->ut_enum('acct_def_cgp_rpopallowed', [ '', 'Y' ]) || $self->ut_enum('acct_def_cgp_mailtoall', [ '', 'Y' ]) || $self->ut_enum('acct_def_cgp_addmailtrailer', [ '', 'Y' ]) - #XXX archive messages + || $self->ut_snumbern('acct_def_cgp_archiveafter') #preferences || $self->ut_alphasn('acct_def_cgp_deletemode') || $self->ut_enum('acct_def_cgp_emptytrash', @@ -501,7 +522,6 @@ sub check { || $self->ut_textn('acct_def_cgp_prontoskinname') || $self->ut_alphan('acct_def_cgp_sendmdnmode') #mail - #XXX rules, archive rule, spam foldering rule(s) ; return $error if $error; diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index 6fe015ab5..7f2e3aa3c 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -291,12 +291,22 @@ that field. % (grep(/^$rvalue$/, split(',',$value)) ? ' SELECTED>' : '>' ). % $record->$select_label(). ''; % } #next $record -% } else { # select_list +% } elsif ( $def->{select_list} ) { % foreach my $item ( @{$def->{select_list}} ) { % $html .= qq!'; % } #next $item +% } elsif ( $def->{select_hash} ) { +% $def->{select_hash} = tie %{ $def->{select_hash} }, +% 'Tie::IxHash', +% @{ $def->{select_hash} } +% if ref($def->{select_hash}) eq 'ARRAY'; +% foreach my $key ( keys %{$def->{select_hash}} ) { +% $html .= qq!'; +% } #next $key % } #endif % $html .= ''; % -- 2.11.0