<% my $conf = new FS::Conf; my($query)=$cgi->keywords; $query ||= ''; #to avoid use of unitialized value errors my(@svc_broadband,$sortby); if ( $query eq 'svcnum' ) { $sortby=\*svcnum_sort; @svc_broadband=qsearch('svc_broadband',{}); } elsif ( $query eq 'blocknum' ) { $sortby=\*blocknum_sort; @svc_broadband=qsearch('svc_broadband',{}); } else { $cgi->param('ip_addr') =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/; my($ip_addr)=$1; @svc_broadband = qsearchs('svc_broadband',{'ip_addr'=>$ip_addr}); } my %routerbyblock = (); foreach my $router (qsearch('router', {})) { foreach ($router->addr_block) { $routerbyblock{$_->blocknum} = $router; } } if ( scalar(@svc_broadband) == 1 ) { print $cgi->redirect(popurl(2). "view/svc_broadband.cgi?". $svc_broadband[0]->svcnum); #exit; } elsif ( scalar(@svc_broadband) == 0 ) { %> <% eidiot "No matching ip address found!\n"; } else { %> <% my($total)=scalar(@svc_broadband); print header("IP Address Search Results",''), < Service # Router IP Address END foreach my $svc_broadband ( sort $sortby (@svc_broadband) ) { my($svcnum,$ip_addr,$routername,$routernum)=( $svc_broadband->svcnum, $svc_broadband->ip_addr, $routerbyblock{$svc_broadband->blocknum}->routername, $routerbyblock{$svc_broadband->blocknum}->routernum, ); my $rowspan = 1; print < $svcnum $routername $ip_addr END #print @rows; print ""; } print < END } sub svcnum_sort { $a->getfield('svcnum') <=> $b->getfield('svcnum'); } sub blocknum_sort { if ($a->getfield('blocknum') == $b->getfield('blocknum')) { $a->getfield('ip_addr') cmp $b->getfield('ip_addr'); } else { $a->getfield('blocknum') cmp $b->getfield('blocknum'); } } %>