3 my $conf = new FS::Conf;
5 my($query)=$cgi->keywords;
6 $query ||= ''; #to avoid use of unitialized value errors
7 my(@svc_broadband,$sortby);
8 if ( $query eq 'svcnum' ) {
10 @svc_broadband=qsearch('svc_broadband',{});
11 } elsif ( $query eq 'blocknum' ) {
12 $sortby=\*blocknum_sort;
13 @svc_broadband=qsearch('svc_broadband',{});
15 $cgi->param('ip_addr') =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/;
17 @svc_broadband = qsearchs('svc_broadband',{'ip_addr'=>$ip_addr});
20 my %routerbyblock = ();
21 foreach my $router (qsearch('router', {})) {
22 foreach ($router->addr_block) {
23 $routerbyblock{$_->blocknum} = $router;
27 if ( scalar(@svc_broadband) == 1 ) {
28 print $cgi->redirect(popurl(2). "view/svc_broadband.cgi?". $svc_broadband[0]->svcnum);
30 } elsif ( scalar(@svc_broadband) == 0 ) {
34 eidiot "No matching ip address found!\n";
39 my($total)=scalar(@svc_broadband);
40 print header("IP Address Search Results",''), <<END;
42 $total matching broadband services found
43 <TABLE BORDER=4 CELLSPACING=0 CELLPADDING=0>
51 foreach my $svc_broadband (
52 sort $sortby (@svc_broadband)
54 my($svcnum,$ip_addr,$routername,$routernum)=(
55 $svc_broadband->svcnum,
56 $svc_broadband->ip_addr,
57 $routerbyblock{$svc_broadband->blocknum}->routername,
58 $routerbyblock{$svc_broadband->blocknum}->routernum,
65 <TD ROWSPAN=$rowspan><A HREF="${p}view/svc_broadband.cgi?$svcnum">$svcnum</A></TD>
66 <TD ROWSPAN=$rowspan><A HREF="${p}view/router.cgi?$routernum">$routername</A></TD>
67 <TD ROWSPAN=$rowspan><A HREF="${p}view/svc_broadband.cgi?$svcnum">$ip_addr</A></TD>
84 $a->getfield('svcnum') <=> $b->getfield('svcnum');
88 if ($a->getfield('blocknum') == $b->getfield('blocknum')) {
89 $a->getfield('ip_addr') cmp $b->getfield('ip_addr');
91 $a->getfield('blocknum') cmp $b->getfield('blocknum');