X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fetc%2Fupgrade%2Fgenerate-rtaddressregexp.in;h=751122a996189001cc01d2075ed16eb89f73de06;hb=ff7b7921948cba175aa99974cda1c9c0080937c1;hp=a0787ca1549a33138cc44b694e9f711d385789e1;hpb=fc6209f398899f0211cfcedeb81a3cd65e04a941;p=freeside.git diff --git a/rt/etc/upgrade/generate-rtaddressregexp.in b/rt/etc/upgrade/generate-rtaddressregexp.in index a0787ca15..751122a99 100644 --- a/rt/etc/upgrade/generate-rtaddressregexp.in +++ b/rt/etc/upgrade/generate-rtaddressregexp.in @@ -3,7 +3,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC # # # (Except where explicitly superseded by other copyright notices) @@ -65,23 +65,45 @@ if (my $re = RT->Config->Get('RTAddressRegexp')) { } use RT::Queues; -my $queues = RT::Queues->new( $RT::SystemUser ); +my $queues = RT::Queues->new( RT->SystemUser ); $queues->UnLimit; -$queues->RowsPerPage(100); -my @addresses = (RT->Config->Get('CorrespondAddress'), RT->Config->Get('CommentAddress')); +my %merged; +merge(\%merged, RT->Config->Get('CorrespondAddress'), RT->Config->Get('CommentAddress')); while ( my $queue = $queues->Next ) { - push @addresses, $queue->CorrespondAddress, $queue->CommentAddress; + merge(\%merged, $queue->CorrespondAddress, $queue->CommentAddress); } -my %seen; -my $re = join '|', map "\Q$_\E", - grep defined && length && !$seen{ lc $_ }++, - @addresses; +my @domains; +for my $domain (sort keys %merged) { + my @addresses; + for my $base (sort keys %{$merged{$domain}}) { + my @subbits = keys(%{$merged{$domain}{$base}}); + if (@subbits > 1) { + push @addresses, "\Q$base\E(?:".join("|",@subbits).")"; + } else { + push @addresses, "\Q$base\E$subbits[0]"; + } + } + if (@addresses > 1) { + push @domains, "(?:".join("|", @addresses).")\Q\@".$domain."\E"; + } else { + push @domains, "$addresses[0]\Q\@$domain\E"; + } +} +my $re = join "|", @domains; print <{lc $3}{$1}{$2||''}++; + } +}