From 07930a9141f823787a7e9c1e88fef453eb850fc7 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 13 Feb 2004 10:35:42 +0000 Subject: add svc_forward.src --- FS/FS/svc_forward.pm | 40 +++++++++++++++++++++++++++++----------- FS/bin/freeside-setup | 3 ++- httemplate/docs/schema.html | 3 ++- httemplate/docs/upgrade10.html | 2 ++ 4 files changed, 35 insertions(+), 13 deletions(-) diff --git a/FS/FS/svc_forward.pm b/FS/FS/svc_forward.pm index 7a121b835..b9e8ff8f7 100644 --- a/FS/FS/svc_forward.pm +++ b/FS/FS/svc_forward.pm @@ -47,9 +47,11 @@ inherits from FS::Record. The following fields are currently supported: =item srcsvc - svcnum of the source of the forward (see L) +=item src - literal source (username or full email address) + =item dstsvc - svcnum of the destination of the forward (see L) -=item dst - foreign destination (email address) - forward not local to freeside +=item dst - literal destination (username or full email address) =back @@ -214,12 +216,19 @@ sub check { #my $part_svc = $x; my $error = $self->ut_numbern('svcnum') - || $self->ut_number('srcsvc') + || $self->ut_numbern('srcsvc') || $self->ut_numbern('dstsvc') ; return $error if $error; - return "Unknown srcsvc" unless $self->srcsvc_acct; + return "Both srcsvc and src were defined; only one can be specified" + if $self->srcsvc && $self->src; + + return "one of srcsvc or src is required" + unless $self->srcsvc || $self->src; + + return "Unknown srcsvc: ". $self->srcsvc + unless ! $self->srcsvc || $self->srcsvc_acct; return "Both dstsvc and dst were defined; only one can be specified" if $self->dstsvc && $self->dst; @@ -227,16 +236,24 @@ sub check { return "one of dstsvc or dst is required" unless $self->dstsvc || $self->dst; - #return "Unknown dstsvc: $dstsvc" unless $self->dstsvc_acct || ! $self->dstsvc; - return "Unknown dstsvc" - unless qsearchs('svc_acct', { 'svcnum' => $self->dstsvc } ) - || ! $self->dstsvc; + return "Unknown dstsvc: ". $self->dstsvc + unless ! $self->dstsvc || $self->dstsvc_acct; + #return "Unknown dstsvc" + # unless qsearchs('svc_acct', { 'svcnum' => $self->dstsvc } ) + # || ! $self->dstsvc; + if ( $self->src ) { + $self->src =~ /^([\w\.\-\&]*)(\@([\w\-]+\.)+\w+)?$/ + or return "Illegal src: ". $self->dst; + $self->src("$1$2"); + } else { + $self->src(''); + } if ( $self->dst ) { - $self->dst =~ /^([\w\.\-]+)\@(([\w\-]+\.)+\w+)$/ + $self->dst =~ /^([\w\.\-\&]*)(\@([\w\-]+\.)+\w+)?$/ or return "Illegal dst: ". $self->dst; - $self->dst("$1\@$2"); + $self->dst("$1$2"); } else { $self->dst(''); } @@ -246,7 +263,8 @@ sub check { =item srcsvc_acct -Returns the FS::svc_acct object referenced by the srcsvc column. +Returns the FS::svc_acct object referenced by the srcsvc column, or false for +literally specified forwards. =cut @@ -258,7 +276,7 @@ sub srcsvc_acct { =item dstsvc_acct Returns the FS::svc_acct object referenced by the srcsvc column, or false for -forwards not local to freeside. +literally specified forwards. =cut diff --git a/FS/bin/freeside-setup b/FS/bin/freeside-setup index 72780e363..feebcf9f7 100755 --- a/FS/bin/freeside-setup +++ b/FS/bin/freeside-setup @@ -844,8 +844,9 @@ sub tables_hash_hack { 'columns' => [ 'svcnum', 'int', '', '', 'srcsvc', 'int', '', '', + 'src', 'varchar', 'NULL', 255, 'dstsvc', 'int', '', '', - 'dst', 'varchar', 'NULL', $char_d, + 'dst', 'varchar', 'NULL', 255, ], 'primary_key' => 'svcnum', 'unique' => [], diff --git a/httemplate/docs/schema.html b/httemplate/docs/schema.html index 40b211cf9..b38031777 100644 --- a/httemplate/docs/schema.html +++ b/httemplate/docs/schema.html @@ -373,8 +373,9 @@
  • domain_record - Domain zone detail
      diff --git a/httemplate/docs/upgrade10.html b/httemplate/docs/upgrade10.html index e98407351..a878495d4 100644 --- a/httemplate/docs/upgrade10.html +++ b/httemplate/docs/upgrade10.html @@ -156,6 +156,8 @@ ALTER TABLE h_part_referral ADD disabled char(1) NULL; CREATE INDEX part_referral1 ON part_referral ( disabled ); ALTER TABLE pkg_svc ADD primary_svc char(1) NULL; ALTER TABLE h_pkg_svc ADD primary_svc char(1) NULL; +ALTER TABLE svc_forward ADD src varchar(255) NULL; +ALTER TABLE h_svc_forward ADD src varchar(255) NULL; dump database, edit: - cust_main: increase otaker from 8 to 32 -- cgit v1.2.1 From 1e2a5c920840e046e4e28ca35681cb0912322666 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 13 Feb 2004 10:57:55 +0000 Subject: continue adding svc_forward.src: make svc_forward.srcsvc nullable --- FS/bin/freeside-setup | 6 +++--- httemplate/docs/upgrade10.html | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/FS/bin/freeside-setup b/FS/bin/freeside-setup index feebcf9f7..7512cc18c 100755 --- a/FS/bin/freeside-setup +++ b/FS/bin/freeside-setup @@ -842,10 +842,10 @@ sub tables_hash_hack { 'svc_forward' => { 'columns' => [ - 'svcnum', 'int', '', '', - 'srcsvc', 'int', '', '', + 'svcnum', 'int', '', '', + 'srcsvc', 'int', 'NULL', '', 'src', 'varchar', 'NULL', 255, - 'dstsvc', 'int', '', '', + 'dstsvc', 'int', 'NULL', '', 'dst', 'varchar', 'NULL', 255, ], 'primary_key' => 'svcnum', diff --git a/httemplate/docs/upgrade10.html b/httemplate/docs/upgrade10.html index a878495d4..c3f23b371 100644 --- a/httemplate/docs/upgrade10.html +++ b/httemplate/docs/upgrade10.html @@ -158,6 +158,12 @@ ALTER TABLE pkg_svc ADD primary_svc char(1) NULL; ALTER TABLE h_pkg_svc ADD primary_svc char(1) NULL; ALTER TABLE svc_forward ADD src varchar(255) NULL; ALTER TABLE h_svc_forward ADD src varchar(255) NULL; +ALTER TABLE svc_forward ALTER COLUMN srcsvc DROP NOT NULL; +ALTER TABLE h_svc_forward ALTER COLUMN srcsvc DROP NOT NULL; +ALTER TABLE svc_forward ALTER COLUMN dstsvc DROP NOT NULL; +ALTER TABLE h_svc_forward ALTER COLUMN dstsvc DROP NOT NULL; + + dump database, edit: - cust_main: increase otaker from 8 to 32 -- cgit v1.2.1 From ecf57b84d7a29c9bebac62eb5ebf178332163fd9 Mon Sep 17 00:00:00 2001 From: ivan Date: Fri, 13 Feb 2004 11:28:07 +0000 Subject: add mail alias browse to main menu and fix mail alias view to recognize new schema also --- httemplate/index.html | 3 +- httemplate/search/svc_forward.cgi | 79 +++++++++++++++++++++++++++++++++++++++ httemplate/view/svc_forward.cgi | 17 +++++++-- 3 files changed, 94 insertions(+), 5 deletions(-) create mode 100755 httemplate/search/svc_forward.cgi diff --git a/httemplate/index.html b/httemplate/index.html index 7d90efc71..d39f8b04d 100644 --- a/httemplate/index.html +++ b/httemplate/index.html @@ -34,7 +34,8 @@
      Phone #

      Username or all accounts by username or uid

      Domain or all domains
      - +
      all mail forwards by svcnum
      +
      diff --git a/httemplate/search/svc_forward.cgi b/httemplate/search/svc_forward.cgi new file mode 100755 index 000000000..10094bc99 --- /dev/null +++ b/httemplate/search/svc_forward.cgi @@ -0,0 +1,79 @@ +<% + +my $conf = new FS::Conf; + +my($query)=$cgi->keywords; +$query ||= ''; #to avoid use of unitialized value errors +my(@svc_forward,$sortby); +if ( $query eq 'svcnum' ) { + $sortby=\*svcnum_sort; + @svc_forward=qsearch('svc_forward',{}); +} else { + eidiot('unimplemented'); +} + +if ( scalar(@svc_forward) == 1 ) { + print $cgi->redirect(popurl(2). "view/svc_forward.cgi?". $svc_forward[0]->svcnum); + #exit; +} elsif ( scalar(@svc_forward) == 0 ) { +%> + +<% + eidiot "No matching forwards found!\n"; +} else { +%> + +<% + my $total = scalar(@svc_forward); + print header("Mail forward Search Results",''), < + + Service #
      (click to view forward) + Mail to
      (click to view account) + Forwards to
      (click to view account) + +END + + foreach my $svc_forward ( + sort $sortby (@svc_forward) + ) { + my $svcnum = $svc_forward->svcnum; + + my $src = $svc_forward->src; + $src = "(anything)$src" if $src =~ /^@/; + if ( $svc_forward->srcsvc_acct ) { + $src = qq!'. + $svc_forward->srcsvc_acct->email. ''; + } + + my $dst = $svc_forward->dst; + if ( $svc_forward->dstsvc_acct ) { + $dst = qq!'. + $svc_forward->dstsvc_acct->email. ''; + } + + print < + $svcnum + $src + $dst + +END + + } + + print < + + +END + +} + +sub svcnum_sort { + $a->getfield('svcnum') <=> $b->getfield('svcnum'); +} + +%> diff --git a/httemplate/view/svc_forward.cgi b/httemplate/view/svc_forward.cgi index 5d619de54..c2ce164d1 100755 --- a/httemplate/view/svc_forward.cgi +++ b/httemplate/view/svc_forward.cgi @@ -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; } -- cgit v1.2.1