s/CGI::(Base|Request)/CGI.pm/;
[freeside.git] / htdocs / search / svc_domain.cgi
1 #!/usr/bin/perl -Tw
2 #
3 # $Id: svc_domain.cgi,v 1.2 1998-12-17 09:41:12 ivan Exp $
4 #
5 # Usage: post form to:
6 #        http://server.name/path/svc_domain.cgi
7 #
8 # Note: Should be run setuid freeside as user nobody.
9 #
10 # ivan@voicenet.com 97-mar-5
11 #
12 # rewrite ivan@sisd.com 98-mar-14
13 #
14 # Changes to allow page to work at a relative position in server
15 #       bmccane@maxbaud.net     98-apr-3
16 #
17 # display total, use FS::CGI now does browsing too ivan@sisd.com 98-jul-17
18 #
19 # $Log: svc_domain.cgi,v $
20 # Revision 1.2  1998-12-17 09:41:12  ivan
21 # s/CGI::(Base|Request)/CGI.pm/;
22 #
23
24 use strict;
25 use CGI;
26 use CGI::Carp qw(fatalsToBrowser);
27 use FS::UID qw(cgisuidsetup);
28 use FS::Record qw(qsearch qsearchs);
29 use FS::CGI qw(header idiot popurl);
30
31 my($cgi)=new CGI;
32 &cgisuidsetup($cgi);
33
34 my(@svc_domain);
35 my($sortby);
36
37 my($query)=$cgi->query_string;
38 if ( $query eq 'svcnum' ) {
39   $sortby=\*svcnum_sort;
40   @svc_domain=qsearch('svc_domain',{});
41 } elsif ( $query eq 'domain' ) {
42   $sortby=\*domain_sort;
43   @svc_domain=qsearch('svc_domain',{});
44 } elsif ( $query eq 'UN_svcnum' ) {
45   $sortby=\*svcnum_sort;
46   @svc_domain = grep qsearchs('cust_svc',{
47       'svcnum' => $_->svcnum,
48       'pkgnum' => '',
49     }), qsearch('svc_domain',{});
50 } elsif ( $query eq 'UN_domain' ) {
51   $sortby=\*domain_sort;
52   @svc_domain = grep qsearchs('cust_svc',{
53       'svcnum' => $_->svcnum,
54       'pkgnum' => '',
55     }), qsearch('svc_domain',{});
56 } else {
57   $cgi->param('domain') =~ /^([\w\-\.]+)$/; 
58   my($domain)=$1;
59   push @svc_domain, qsearchs('svc_domain',{'domain'=>$domain});
60 }
61
62 if ( scalar(@svc_domain) == 1 ) {
63   print $cgi->redirect(popurl(2). "view/svc_domain.cgi?". $svc_domain[0]->svcnum);
64   exit;
65 } elsif ( scalar(@svc_domain) == 0 ) {
66   idiot "No matching domains found!\n";
67   exit;
68 } else {
69   CGI::Base::SendHeaders(); # one guess
70
71   my($total)=scalar(@svc_domain);
72   CGI::Base::SendHeaders(); # one guess
73   print header("Domain Search Results",''), <<END;
74
75     $total matching domains found
76     <TABLE BORDER=4 CELLSPACING=0 CELLPADDING=0>
77       <TR>
78         <TH>Service #</TH>
79         <TH>Domain</TH>
80         <TH></TH>
81       </TR>
82 END
83
84   my(%saw,$svc_domain);
85   my $p = popurl(2);
86   foreach $svc_domain (
87     sort $sortby grep(!$saw{$_->svcnum}++, @svc_domain)
88   ) {
89     my($svcnum,$domain)=(
90       $svc_domain->svcnum,
91       $svc_domain->domain,
92     );
93     my($malias);
94     if ( qsearch('svc_acct_sm',{'domsvc'=>$svcnum}) ) {
95       $malias=(
96         qq|<FORM ACTION="svc_acct_sm.cgi" METHOD="post">|.
97           qq|<INPUT TYPE="hidden" NAME="domuser" VALUE="">|.
98           qq|<INPUT TYPE="hidden" NAME="domain" VALUE="$domain">|.
99           qq|<INPUT TYPE="submit" VALUE="(mail aliases)">|.
100           qq|</FORM>|
101       );
102     } else {
103       $malias='';
104     }
105     print <<END;
106     <TR>
107       <TD><A HREF="${p}view/svc_domain.cgi?$svcnum"><FONT SIZE=-1>$svcnum</FONT></A></TD>
108       <TD><FONT SIZE=-1>$domain</FONT></TD>
109       <TD><FONT SIZE=-1>$malias</FONT></TD>
110     </TR>
111 END
112   }
113  
114   print <<END;
115     </TABLE>
116     </CENTER>
117   </BODY>
118 </HTML>
119 END
120
121 }
122
123 sub svcnum_sort {
124   $a->getfield('svcnum') <=> $b->getfield('svcnum');
125 }
126
127 sub domain_sort {
128   $a->getfield('domain') cmp $b->getfield('doimain');
129 }
130
131