summaryrefslogtreecommitdiff
path: root/FS/FS/payinfo_Mixin.pm
diff options
context:
space:
mode:
authorivan <ivan>2008-03-01 23:30:44 +0000
committerivan <ivan>2008-03-01 23:30:44 +0000
commitc21f9fadde9100aedb8c4cfc35629bc3294ba91e (patch)
treecd24df303dce5aaed107a9d0b1100a247a274c0c /FS/FS/payinfo_Mixin.pm
parent4f6170e806c20e9de9ce26b195d7f2e58b04a404 (diff)
added a config value to control the extent of credit card masking, but since cust_main.paymask is in the db, need something to update it for all existing customers too
Diffstat (limited to 'FS/FS/payinfo_Mixin.pm')
-rw-r--r--FS/FS/payinfo_Mixin.pm14
1 files changed, 10 insertions, 4 deletions
diff --git a/FS/FS/payinfo_Mixin.pm b/FS/FS/payinfo_Mixin.pm
index 2d7b4ff..15c4e39 100644
--- a/FS/FS/payinfo_Mixin.pm
+++ b/FS/FS/payinfo_Mixin.pm
@@ -160,10 +160,16 @@ sub mask_payinfo {
} else {
# if not, mask it...
if ($payby eq 'CARD' || $payby eq 'DCRD' || $payby eq 'MCRD') {
- # Credit Cards (Show first and last four)
- $paymask = substr($payinfo,0,6).
- 'x'x(length($payinfo)-10).
- substr($payinfo,(length($payinfo)-4));
+ # Credit Cards
+ my $conf = new FS::Conf;
+ my $mask_method = $conf->config('card_masking_method') || 'first6last4';
+ $mask_method =~ /^first(\d+)last(\d+)$/
+ or die "can't parse card_masking_method $mask_method";
+ my($first, $last) = ($1, $2);
+
+ $paymask = substr($payinfo,0,$first).
+ 'x'x(length($payinfo)-$first-$last).
+ substr($payinfo,(length($payinfo)-$last));
} elsif ($payby eq 'CHEK' || $payby eq 'DCHK' ) {
# Checks (Show last 2 @ bank)
my( $account, $aba ) = split('@', $payinfo );