diff options
author | Ivan Kohler <ivan@freeside.biz> | 2013-02-27 01:50:04 -0800 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2013-02-27 01:50:04 -0800 |
commit | efa799391aeba085b65145428cab1cf1074d3f6d (patch) | |
tree | c417948eb48c4f2023c0a99e98da553e9e25010b /FS/FS/svc_Common.pm | |
parent | 3d5b5f472b76999daacc646f8d45dc42aba48bfd (diff) |
refactor svc_acct and svc_broadband search into svc_Common, RT#21054
Diffstat (limited to 'FS/FS/svc_Common.pm')
-rw-r--r-- | FS/FS/svc_Common.pm | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm index f7f0b40..ff465bf 100644 --- a/FS/FS/svc_Common.pm +++ b/FS/FS/svc_Common.pm @@ -1315,8 +1315,7 @@ Parameters: =cut -# based on FS::svc_acct::search, both that and svc_broadband::search should -# eventually use this instead +# svc_broadband::search should eventually use this instead sub search { my ($class, $params) = @_; @@ -1329,6 +1328,8 @@ sub search { my @where = (); + $class->_search_svc($params, \@from, \@where) if $class->can('_search_svc'); + # # domain # if ( $params->{'domain'} ) { # my $svc_domain = qsearchs('svc_domain', { 'domain'=>$params->{'domain'} } ); @@ -1377,15 +1378,40 @@ sub search { } #pkgpart - if ( $params->{'pkgpart'} && scalar(@{ $params->{'pkgpart'} }) ) { - my @pkgpart = grep /^(\d+)$/, @{ $params->{'pkgpart'} }; - push @where, 'cust_pkg.pkgpart IN ('. join(',', @pkgpart ). ')'; + ##pkgpart, now properly untainted, can be arrayref + #for my $pkgpart ( $params->{'pkgpart'} ) { + # if ( ref $pkgpart ) { + # my $where = join(',', map { /^(\d+)$/ ? $1 : () } @$pkgpart ); + # push @where, "cust_pkg.pkgpart IN ($where)" if $where; + # } + # elsif ( $pkgpart =~ /^(\d+)$/ ) { + # push @where, "cust_pkg.pkgpart = $1"; + # } + #} + if ( $params->{'pkgpart'} ) { + my @pkgpart = ref( $params->{'pkgpart'} ) + ? @{ $params->{'pkgpart'} } + : $params->{'pkgpart'} + ? ( $params->{'pkgpart'} ) + : (); + @pkgpart = grep /^(\d+)$/, @pkgpart; + push @where, 'cust_pkg.pkgpart IN ('. join(',', @pkgpart ). ')' if @pkgpart; + } + + #svcnum + if ( $params->{'svcnum'} =~ /^(\d+)$/ ) { + push @where, "svcnum = $1"; } # svcpart - if ( $params->{'svcpart'} && scalar(@{ $params->{'svcpart'} }) ) { - my @svcpart = grep /^(\d+)$/, @{ $params->{'svcpart'} }; - push @where, 'svcpart IN ('. join(',', @svcpart ). ')'; + if ( $params->{'svcpart'} ) { + my @svcpart = ref( $params->{'svcpart'} ) + ? @{ $params->{'svcpart'} } + : $params->{'svcpart'} + ? ( $params->{'svcpart'} ) + : (); + @svcpart = grep /^(\d+)$/, @svcpart; + push @where, 'svcpart IN ('. join(',', @svcpart ). ')' if @svcpart; } if ( $params->{'exportnum'} =~ /^(\d+)$/ ) { |