summaryrefslogtreecommitdiff
path: root/FS/FS/svc_Common.pm
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-02-27 01:50:04 -0800
committerIvan Kohler <ivan@freeside.biz>2013-02-27 01:50:04 -0800
commitefa799391aeba085b65145428cab1cf1074d3f6d (patch)
treec417948eb48c4f2023c0a99e98da553e9e25010b /FS/FS/svc_Common.pm
parent3d5b5f472b76999daacc646f8d45dc42aba48bfd (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.pm42
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+)$/ ) {