diff options
author | ivan <ivan> | 2001-12-03 11:33:19 +0000 |
---|---|---|
committer | ivan <ivan> | 2001-12-03 11:33:19 +0000 |
commit | 301ef098a56e1fc011d26d1f108a48e99ad701f4 (patch) | |
tree | 3dc67723ccb9849d9b7bc3c65709cb7c50bb5de2 /httemplate/search | |
parent | 63ec39a8c2a32b5ac325c4973945a26398678347 (diff) |
paged service browse!!
Diffstat (limited to 'httemplate/search')
-rwxr-xr-x | httemplate/search/cust_main.cgi | 4 | ||||
-rwxr-xr-x | httemplate/search/cust_pkg.cgi | 10 | ||||
-rwxr-xr-x | httemplate/search/svc_acct.cgi | 103 |
3 files changed, 83 insertions, 34 deletions
diff --git a/httemplate/search/cust_main.cgi b/httemplate/search/cust_main.cgi index d5bc17aec..b9b1d1fb2 100755 --- a/httemplate/search/cust_main.cgi +++ b/httemplate/search/cust_main.cgi @@ -1,5 +1,5 @@ <% -#<!-- $Id: cust_main.cgi,v 1.17 2001-12-03 10:59:25 ivan Exp $ --> +#<!-- $Id: cust_main.cgi,v 1.18 2001-12-03 11:33:19 ivan Exp $ --> use strict; #use vars qw( $conf %ncancelled_pkgs %all_pkgs $cgi @cust_main $sortby ); @@ -110,7 +110,7 @@ if ( $cgi->param('browse') ) { or die dbh->errstr. " doing $statement"; $sth->execute or die "Error executing \"$statement\": ". $sth->errstr; - $total = @{$sth->fetchrow_arrayref}[0]; + $total = $sth->fetchrow_arrayref->[0]; my @just_cust_main = qsearch('cust_main',{}, '', "$ncancelled $orderby $limit" diff --git a/httemplate/search/cust_pkg.cgi b/httemplate/search/cust_pkg.cgi index e862cefab..9f13dbb33 100755 --- a/httemplate/search/cust_pkg.cgi +++ b/httemplate/search/cust_pkg.cgi @@ -1,5 +1,5 @@ <% -# <!-- $Id: cust_pkg.cgi,v 1.7 2001-12-03 10:59:25 ivan Exp $ --> +# <!-- $Id: cust_pkg.cgi,v 1.8 2001-12-03 11:33:19 ivan Exp $ --> use strict; use vars qw ( $cgi @cust_pkg $sortby $query %part_pkg @@ -31,13 +31,11 @@ $limit .= " OFFSET $offset" if $offset; my $total; -($query) = $cgi->keywords; my $unconf = ''; -#this tree is a little bit redundant +($query) = $cgi->keywords; if ( $query eq 'pkgnum' ) { $sortby=\*pkgnum_sort; - } elsif ( $query eq 'APKG_pkgnum' ) { $sortby=\*pkgnum_sort; @@ -86,7 +84,7 @@ my $sth = dbh->prepare($statement) or die dbh->errstr. " doing $statement"; $sth->execute or die "Error executing \"$statement\": ". $sth->errstr; -$total = @{$sth->fetchrow_arrayref}[0]; +$total = $sth->fetchrow_arrayref->[0]; @cust_pkg = qsearch('cust_pkg',{}, '', "$unconf ORDER BY pkgnum $limit" ); @@ -100,6 +98,7 @@ if ( scalar(@cust_pkg) == 1 ) { } else { $total ||= scalar(@cust_pkg); + #begin pager my $pager = ''; if ( $total != scalar(@cust_pkg) && $maxrecords ) { unless ( $offset == 0 ) { @@ -124,6 +123,7 @@ if ( scalar(@cust_pkg) == 1 ) { '"><B><FONT SIZE="+1">Next</FONT></B></A> '; } } + #end pager print header('Package Search Results',''), "$total matching packages found<BR><BR>$pager", &table(), <<END; diff --git a/httemplate/search/svc_acct.cgi b/httemplate/search/svc_acct.cgi index fb970e966..8f7126ea8 100755 --- a/httemplate/search/svc_acct.cgi +++ b/httemplate/search/svc_acct.cgi @@ -1,8 +1,9 @@ <% -# <!-- $Id: svc_acct.cgi,v 1.8 2001-10-30 14:54:07 ivan Exp $ --> +# <!-- $Id: svc_acct.cgi,v 1.9 2001-12-03 11:33:19 ivan Exp $ --> use strict; -use vars qw( $cgi @svc_acct $sortby $query $mydomain ); +use vars qw( $cgi @svc_acct $sortby $query $mydomain + $conf $maxrecords $limit $offset ); use CGI; use CGI::Carp qw(fatalsToBrowser); use FS::UID qw(cgisuidsetup); @@ -16,41 +17,61 @@ $mydomain = ''; $cgi = new CGI; &cgisuidsetup($cgi); +$conf = new FS::Conf; +$maxrecords = $conf->config('maxsearchrecordsperpage'); + +my $orderby = ''; #removeme + +$limit = ''; +$limit .= "LIMIT $maxrecords" if $maxrecords; + +$offset = $cgi->param('offset') || 0; +$limit .= " OFFSET $offset" if $offset; + +my $total; + ($query)=$cgi->keywords; $query ||= ''; #to avoid use of unitialized value errors -#this tree is a little bit redundant + +my $unlinked = ''; +if ( $query =~ /^UN_(.*)$/ ) { + $query = $1; + $unlinked = ' + WHERE 0 < + ( SELECT count(*) FROM cust_svc + WHERE cust_svc.svcnum = svc_acct.svcnum + AND pkgnum IS NULL + ) + '; +} + if ( $query eq 'svcnum' ) { $sortby=\*svcnum_sort; - @svc_acct=qsearch('svc_acct',{}); + $orderby = 'ORDER BY svcnum'; } elsif ( $query eq 'username' ) { $sortby=\*username_sort; - @svc_acct=qsearch('svc_acct',{}); + $orderby = 'ORDER BY username'; } elsif ( $query eq 'uid' ) { $sortby=\*uid_sort; - @svc_acct=grep $_->uid ne '', qsearch('svc_acct',{}); -} elsif ( $query eq 'UN_svcnum' ) { - $sortby=\*svcnum_sort; - @svc_acct = grep qsearchs('cust_svc',{ - 'svcnum' => $_->svcnum, - 'pkgnum' => '', - }), qsearch('svc_acct',{}); -} elsif ( $query eq 'UN_username' ) { - $sortby=\*username_sort; - @svc_acct = grep qsearchs('cust_svc',{ - 'svcnum' => $_->svcnum, - 'pkgnum' => '', - }), qsearch('svc_acct',{}); -} elsif ( $query eq 'UN_uid' ) { - $sortby=\*uid_sort; - @svc_acct = grep qsearchs('cust_svc',{ - 'svcnum' => $_->svcnum, - 'pkgnum' => '', - }), qsearch('svc_acct',{}); + $orderby = ( $unlinked ? 'AND' : 'WHERE' ). 'uid IS NOT NULL ORDER BY uid'; } else { $sortby=\*uid_sort; &usernamesearch; } +if ( $query eq 'svcnum' || $query eq 'username' || $query eq 'uid' ) { + + my $statement = "SELECT COUNT(*) FROM svc_acct $unlinked"; + my $sth = dbh->prepare($statement) + or die dbh->errstr. " doing $statement"; + $sth->execute or die "Error executing \"$statement\": ". $sth->errstr; + + $total = $sth->fetchrow_arrayref->[0]; + + @svc_acct = qsearch('svc_acct', {}, '', "$unlinked $orderby $limit"); + +} + if ( scalar(@svc_acct) == 1 ) { my($svcnum)=$svc_acct[0]->svcnum; print $cgi->redirect(popurl(2). "view/svc_acct.cgi?$svcnum"); #redirect @@ -58,9 +79,37 @@ if ( scalar(@svc_acct) == 1 ) { } elsif ( scalar(@svc_acct) == 0 ) { #error idiot("Account not found"); } else { - my($total)=scalar(@svc_acct); + $total ||= scalar(@svc_acct); + + #begin pager + my $pager = ''; + if ( $total != scalar(@svc_acct) && $maxrecords ) { + unless ( $offset == 0 ) { + $cgi->param('offset', $offset - $maxrecords); + $pager .= '<A HREF="'. $cgi->self_url. + '"><B><FONT SIZE="+1">Previous</FONT></B></A> '; + } + my $poff; + my $page; + for ( $poff = 0; $poff < $total; $poff += $maxrecords ) { + $page++; + if ( $offset == $poff ) { + $pager .= qq!<FONT SIZE="+2">$page</FONT> !; + } else { + $cgi->param('offset', $poff); + $pager .= qq!<A HREF="!. $cgi->self_url. qq!">$page</A> !; + } + } + unless ( $offset + $maxrecords > $total ) { + $cgi->param('offset', $offset + $maxrecords); + $pager .= '<A HREF="'. $cgi->self_url. + '"><B><FONT SIZE="+1">Next</FONT></B></A> '; + } + } + #end pager + print header("Account Search Results",''), - "$total matching accounts found", + "$total matching accounts found<BR><BR>$pager", &table(), <<END; <TR> <TH><FONT SIZE=-1>#</FONT></TH> @@ -165,7 +214,7 @@ END } - print '</TABLE>'; + print '</TABLE>$pager<BR>'; if ( $mydomain ) { print "<BR><FONT COLOR=\"#FF0000\">*</FONT> The <I>$mydomain</I> domain ". |