add mail alias browse to main menu and fix mail alias view to recognize new schema...
authorivan <ivan>
Fri, 13 Feb 2004 11:28:18 +0000 (11:28 +0000)
committerivan <ivan>
Fri, 13 Feb 2004 11:28:18 +0000 (11:28 +0000)
httemplate/index.html
httemplate/search/svc_forward.cgi
httemplate/view/svc_forward.cgi

index 44c81dd..6624a3f 100644 (file)
@@ -34,8 +34,7 @@
         <FORM ACTION="search/cust_main.cgi" METHOD="POST"><INPUT TYPE="hidden" NAME="phone_on" VALUE="1">Phone # <INPUT TYPE="text" NAME="phone_text"><INPUT TYPE="submit" VALUE="Search"></FORM>
         <BR><FORM ACTION="search/svc_acct.cgi" METHOD="POST">Username <INPUT TYPE="text" NAME="username"><SELECT NAME="username_type"><OPTION VALUE="All">(all)</OPTION><OPTION>Fuzzy</OPTION><OPTION>Substring</OPTION><OPTION SELECTED>Exact</OPTION></SELECT><INPUT TYPE="submit" VALUE="Search"> or <A HREF="search/svc_acct.cgi?username">all accounts by username</A> or <A HREF="search/svc_acct.cgi?uid">uid</A></FORM>
         <BR><FORM ACTION="search/svc_domain.cgi" METHOD="POST">Domain <INPUT TYPE="text" NAME="domain"><INPUT TYPE="submit" VALUE="Search"> or <A HREF="search/svc_domain.cgi?domain">all domains</A></FORM>
-<!--        <LI><A HREF="search/svc_acct_sm.html">mail aliases (by domain, and optionally username)</A>-->
-<!--        <LI><A HREF="search/svc_forward.html">mail forwards (by ?)</A>-->
+        <BR><A HREF="search/svc_forward.cgi?svcnum">all mail forwards by svcnum</A><BR>
       <BR>
     </TD></TR>
     </TABLE>
index 10094bc..948b1d9 100755 (executable)
@@ -4,64 +4,141 @@ my $conf = new FS::Conf;
 
 my($query)=$cgi->keywords;
 $query ||= ''; #to avoid use of unitialized value errors
-my(@svc_forward,$sortby);
+my(@svc_domain,$sortby);
 if ( $query eq 'svcnum' ) {
   $sortby=\*svcnum_sort;
-  @svc_forward=qsearch('svc_forward',{});
+  @svc_domain=qsearch('svc_domain',{});
+} elsif ( $query eq 'domain' ) {
+  $sortby=\*domain_sort;
+  @svc_domain=qsearch('svc_domain',{});
+} elsif ( $query eq 'UN_svcnum' ) {
+  $sortby=\*svcnum_sort;
+  @svc_domain = grep qsearchs('cust_svc',{
+      'svcnum' => $_->svcnum,
+      'pkgnum' => '',
+    }), qsearch('svc_domain',{});
+} elsif ( $query eq 'UN_domain' ) {
+  $sortby=\*domain_sort;
+  @svc_domain = grep qsearchs('cust_svc',{
+      'svcnum' => $_->svcnum,
+      'pkgnum' => '',
+    }), qsearch('svc_domain',{});
+} elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
+  @svc_domain =
+    qsearch( 'svc_domain', {}, '',
+               " WHERE $1 = ( SELECT svcpart FROM cust_svc ".
+               "              WHERE cust_svc.svcnum = svc_domain.svcnum ) "
+    );
+  $sortby=\*svcnum_sort;
 } else {
-  eidiot('unimplemented');
+  $cgi->param('domain') =~ /^([\w\-\.]+)$/; 
+  my($domain)=$1;
+  #push @svc_domain, qsearchs('svc_domain',{'domain'=>$domain});
+  @svc_domain = qsearchs('svc_domain',{'domain'=>$domain});
 }
 
-if ( scalar(@svc_forward) == 1 ) {
-  print $cgi->redirect(popurl(2). "view/svc_forward.cgi?". $svc_forward[0]->svcnum);
+if ( scalar(@svc_domain) == 1 ) {
+  print $cgi->redirect(popurl(2). "view/svc_domain.cgi?". $svc_domain[0]->svcnum);
   #exit;
-} elsif ( scalar(@svc_forward) == 0 ) {
+} elsif ( scalar(@svc_domain) == 0 ) {
 %>
 <!-- mason kludge -->
 <%
-  eidiot "No matching forwards found!\n";
+  eidiot "No matching domains found!\n";
 } else {
 %>
 <!-- mason kludge -->
 <%
-  my $total = scalar(@svc_forward);
-  print header("Mail forward Search Results",''), <<END;
+  my($total)=scalar(@svc_domain);
+  print header("Domain Search Results",''), <<END;
 
-    $total matching mail forwards found
+    $total matching domains found
     <TABLE BORDER=4 CELLSPACING=0 CELLPADDING=0>
       <TR>
-        <TH>Service #<BR><FONT SIZE=-1>(click to view forward)</FONT></TH>
-        <TH>Mail to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
+        <TH>Service #</TH>
+        <TH>Domain</TH>
+<!--        <TH>Mail to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
         <TH>Forwards to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
+-->
       </TR>
 END
 
-  foreach my $svc_forward (
-    sort $sortby (@svc_forward)
+#  my(%saw);                 # if we've multiple domains with the same
+                             # svcnum, then we've a corrupt database
+
+  foreach my $svc_domain (
+#    sort $sortby grep(!$saw{$_->svcnum}++, @svc_domain)
+    sort $sortby (@svc_domain)
   ) {
-    my $svcnum = $svc_forward->svcnum;
+    my($svcnum,$domain)=(
+      $svc_domain->svcnum,
+      $svc_domain->domain,
+    );
 
-    my $src = $svc_forward->src;
-    $src = "<I>(anything)</I>$src" if $src =~ /^@/;
-    if ( $svc_forward->srcsvc_acct ) {
-      $src = qq!<A HREF="${p}view/svc_acct.cgi?!. $svc_forward->srcsvc. '">'.
-             $svc_forward->srcsvc_acct->email. '</A>';
-    }
+    #don't display all accounts here
+    my $rowspan = 1;
 
-    my $dst = $svc_forward->dst;
-    if ( $svc_forward->dstsvc_acct ) {
-      $dst = qq!<A HREF="${p}view/svc_acct.cgi?!. $svc_forward->dstsvc. '">'.
-             $svc_forward->dstsvc_acct->email. '</A>';
-    }
+    #my @svc_acct=qsearch('svc_acct',{'domsvc' => $svcnum});
+    #my $rowspan = 0;
+    #
+    #my $n1 = '';
+    #my($svc_acct, @rows);
+    #foreach $svc_acct (
+    #  sort {$b->getfield('username') cmp $a->getfield('username')} (@svc_acct)
+    #) {
+    #
+    #  my (@forwards) = ();
+    #
+    #  my($svcnum,$username)=(
+    #    $svc_acct->svcnum,
+    #    $svc_acct->username,
+    #  );
+    #
+    #  my @svc_forward = qsearch( 'svc_forward', { 'srcsvc' => $svcnum } );
+    #  my $svc_forward;
+    #  foreach $svc_forward (@svc_forward) {
+    #    my($dstsvc,$dst) = (
+    #      $svc_forward->dstsvc,
+    #      $svc_forward->dst,
+    #    );
+    #    if ($dstsvc) {
+    #      my $dst_svc_acct=qsearchs( 'svc_acct', { 'svcnum' => $dstsvc } );
+    #      my $destination=$dst_svc_acct->email;
+    #      push @forwards, qq!<TD><A HREF="!, popurl(2),
+    #            qq!view/svc_acct.cgi?$dstsvc">$destination</A>!,
+    #            qq!</TD></TR>!
+    #      ;
+    #    }else{
+    #      push @forwards, qq!<TD>$dst</TD></TR>!
+    #      ;
+    #    }
+    #  }
+    #
+    #  push @rows, qq!$n1<TD ROWSPAN=!, (scalar(@svc_forward) || 1),
+    #        qq!><A HREF="!. popurl(2). qq!view/svc_acct.cgi?$svcnum">!,
+    #  #print '', ( ($domuser eq '*') ? "<I>(anything)</I>" : $domuser );
+    #        ( ($username eq '*') ? "<I>(anything)</I>" : $username ),
+    #        qq!\@$domain</A> </TD>!,
+    #  ;
+    #
+    #  push @rows, @forwards;
+    #
+    #  $rowspan += (scalar(@svc_forward) || 1);
+    #  $n1 = "</TR><TR>";
+    #}
+    ##end of false laziness
+    #
+    #
 
     print <<END;
-      <TR>
-        <TD><A HREF="${p}view/svc_forward.cgi?$svcnum">$svcnum</A></TD>
-        <TD>$src</TD>
-        <TD>$dst</TD>
-      </TR>
+    <TR>
+      <TD ROWSPAN=$rowspan><A HREF="${p}view/svc_domain.cgi?$svcnum">$svcnum</A></TD>
+      <TD ROWSPAN=$rowspan><A HREF="${p}view/svc_domain.cgi?$svcnum">$domain</A></TD>
 END
 
+    #print @rows;
+    print "</TR>";
+
   }
  
   print <<END;
@@ -76,4 +153,9 @@ sub svcnum_sort {
   $a->getfield('svcnum') <=> $b->getfield('svcnum');
 }
 
+sub domain_sort {
+  $a->getfield('domain') cmp $b->getfield('domain');
+}
+
+
 %>
index c8d1d62..e50109b 100755 (executable)
@@ -39,16 +39,25 @@ my($srcsvc,$dstsvc,$dst) = (
   $svc_forward->dstsvc,
   $svc_forward->dst,
 );
+my $src = $svc_forward->dbdef_table->column('src') ? $svc_forward->src : '';
+
 my $svc = $part_svc->svc;
-my $svc_acct = qsearchs('svc_acct',{'svcnum'=>$srcsvc})
-  or die "Corrupted database: no svc_acct.svcnum matching srcsvc $srcsvc";
-my $source = $svc_acct->email;
+
+my $source;
+if ($srcsvc) {
+  my $svc_acct = qsearchs('svc_acct',{'svcnum'=>$srcsvc})
+    or die "Corrupted database: no svc_acct.svcnum matching srcsvc $srcsvc";
+  $source = $svc_acct->email;
+} else {
+  $source = $src;
+}
+
 my $destination;
 if ($dstsvc) {
   my $svc_acct = qsearchs('svc_acct',{'svcnum'=>$dstsvc})
     or die "Corrupted database: no svc_acct.svcnum matching dstsvc $dstsvc";
   $destination = $svc_acct->email;
-}else{
+} else {
   $destination = $dst;
 }