X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=fs_signup%2FFS-SignupClient%2Fcgi%2Fsignup.cgi;h=4f9efff987dcec732f989a2b0d1acf6b5b09254d;hp=5ca93d2891d49b2c9d5a56f3b5a65fc8f1391e9f;hb=c6a602884ff9823a1b673de8f7d7d8c045377f52;hpb=9ae101389f2fe652575c6ab314a5e95c2283b72e diff --git a/fs_signup/FS-SignupClient/cgi/signup.cgi b/fs_signup/FS-SignupClient/cgi/signup.cgi index 5ca93d289..4f9efff98 100755 --- a/fs_signup/FS-SignupClient/cgi/signup.cgi +++ b/fs_signup/FS-SignupClient/cgi/signup.cgi @@ -1,6 +1,7 @@ +#!/usr/bin/perl -T #!/usr/bin/perl -Tw # -# $Id: signup.cgi,v 1.48 2003-10-25 02:05:44 ivan Exp $ +# $Id: signup.cgi,v 1.52 2004-10-01 01:38:02 ivan Exp $ use strict; use vars qw( @payby $cgi $locales $packages @@ -10,8 +11,8 @@ use vars qw( @payby $cgi $locales $packages $country $zip $daytime $night $fax $invoicing_list $payby $payinfo $paycvv $paydate $payname $referral_custnum $init_popstate $pkgpart $username $password $password2 $sec_phrase $popnum - $agentnum - $ieak_file $ieak_template $cck_file $cck_template + $agentnum $refnum + $ieak_file $ieak_template $signup_html $signup_template $success_html $success_template $decline_html $decline_template @@ -20,14 +21,14 @@ use vars qw( @payby $cgi $locales $packages $self_url ); use subs qw( print_form print_okay print_decline - success_default decline_default - expselect ); + success_default decline_default ); use CGI; #use CGI::Carp qw(fatalsToBrowser); use Text::Template; use Business::CreditCard; -use HTTP::Headers::UserAgent 2.00; -use FS::SignupClient 0.03 qw( signup_info new_customer ); +use HTTP::BrowserDetect; +use FS::SignupClient 0.03 qw( signup_info new_customer + regionselector expselect popselector); #acceptable payment methods # @@ -37,7 +38,6 @@ use FS::SignupClient 0.03 qw( signup_info new_customer ); @payby = qw( CARD PREPAY ); $ieak_file = '/usr/local/freeside/ieak.template'; -$cck_file = '/usr/local/freeside/cck.template'; $signup_html = -e 'signup.html' ? 'signup.html' : '/usr/local/freeside/signup.html'; @@ -62,17 +62,6 @@ if ( -e $ieak_file ) { $ieak_template = ''; } -if ( -e $cck_file ) { - my $cck_txt = Text::Template::_load_text($cck_file) - or die $Text::Template::ERROR; - $cck_txt =~ /^(.*)$/s; #untaint the template source - it's trusted - $cck_txt = $1; - $cck_template = new Text::Template ( TYPE => 'STRING', SOURCE => $cck_txt ) - or die $Text::Template::ERROR; -} else { - $cck_template = ''; -} - $agentnum = ''; if ( -e $signup_html ) { my $signup_txt = Text::Template::_load_text($signup_html) @@ -218,6 +207,7 @@ if ( defined $cgi->param('magic') ) { #$agentnum, # = $cgi->param('agentnum'), $agentnum ||= $cgi->param('agentnum'); $init_popstate = $cgi->param('init_popstate'); + $refnum = $cgi->param('refnum'); if ( $cgi->param('_password') ne $cgi->param('_password2') ) { $error = $init_data->{msgcat}{passwords_dont_match}; #msgcat @@ -266,6 +256,7 @@ if ( defined $cgi->param('magic') ) { '_password' => $password, 'popnum' => $popnum, 'agentnum' => $agentnum, + 'refnum' => $refnum, map { $_ => $cgi->param($_) } grep { /^snarf_/ } $cgi->param } ); @@ -314,6 +305,7 @@ if ( defined $cgi->param('magic') ) { $popnum = ''; $referral_custnum = $cgi->param('ref') || ''; $init_popstate = $cgi->param('init_popstate') || ''; + $refnum = $init_data->{'refnum'}; print_form; } @@ -336,7 +328,7 @@ sub print_decline { } sub print_okay { - my $user_agent = new HTTP::Headers::UserAgent $ENV{HTTP_USER_AGENT}; + my $user_agent = new HTTP::BrowserDetect $ENV{HTTP_USER_AGENT}; $cgi->param('username') =~ /^(.+)$/ or die "fatal: invalid username got past FS::SignupClient::new_customer"; @@ -359,292 +351,16 @@ sub print_okay { #global for template $pkg = ( grep { $_->{'pkgpart'} eq $pkgpart } @$packages )[0]->{'pkg'}; - if ( $ieak_template - && $user_agent->platform eq 'ia32' - && $user_agent->os =~ /^win/ - && ($user_agent->browser)[0] eq 'IE' - ) - { #send an IEAK config + if ( $ieak_template && $user_agent->windows && $user_agent->ie ) { + #send an IEAK config print $cgi->header('application/x-Internet-signup'), $ieak_template->fill_in(); - } elsif ( $cck_template - && $user_agent->platform eq 'ia32' - && $user_agent->os =~ /^win/ - && ($user_agent->browser)[0] eq 'Netscape' - ) - { #send a Netscape config - my $cck_data = $cck_template->fill_in(); - print $cgi->header('application/x-netscape-autoconfigure-dialer-v2'), - map { - m/(.*)\s+(.*)$/; - pack("N", length($1)). $1. pack("N", length($2)). $2; - } split(/\n/, $cck_data); - } else { #send a simple confirmation print $cgi->header( '-expires' => 'now' ), $success_template->fill_in(); } } -#horrible false laziness with FS/FS/svc_acct_pop.pm::popselector -sub popselector { - - my( $popnum ) = @_; - - return '' unless @$pops; - return $pops->[0]{city}. ', '. $pops->[0]{state}. - ' ('. $pops->[0]{ac}. ')/'. $pops->[0]{exch}. '-'. $pops->[0]{loc}. - '' - if scalar(@$pops) == 1; - - #my %pop = (); - #my %popnum2pop = (); - #foreach (@$pops) { - # push @{ $pop{ $_->{state} }->{ $_->{ac} } }, $_; - # $popnum2pop{$_->{popnum}} = $_; - #} - - my $text = < - function opt(what,href,text) { - var optionName = new Option(text, href, false, false) - var length = what.length; - what.options[length] = optionName; - } -END - - if ( $init_popstate ) { - $text .= ''; - } else { - $text .= <param('popac')) { - $text .= "what.form.popac.options[what.form.popac.length-1].selected = true;\n"; - } - } - $text .= "}\n" unless $init_popstate; - } - $text .= "popac_changed(what.form.popac)}\n"; - - $text .= <{$popac}}) { - my $o_popnum = $pop->{popnum}; - my $poptext = $pop->{city}. ', '. $pop->{state}. - ' ('. $pop->{ac}. ')/'. $pop->{exch}. '-'. $pop->{loc}; - - $text .= "opt(what.form.popnum, \"$o_popnum\", \"$poptext\");\n"; - if ($popnum == $o_popnum) { - $text .= "what.form.popnum.options[what.form.popnum.length-1].selected = true;\n"; - } - } - $text .= "}\n"; - } - } - - - $text .= "}\n\n"; - - $text .= - qq!'; - - $text .= - qq!!; - - $text .= qq!
'; #callback? return 3 html pieces? #'
!; - - $text; - -} - -sub expselect { - my $prefix = shift; - my $date = shift || ''; - my( $m, $y ) = ( 0, 0 ); - if ( $date =~ /^(\d{4})-(\d{2})-\d{2}$/ ) { #PostgreSQL date format - ( $m, $y ) = ( $2, $1 ); - } elsif ( $date =~ /^(\d{1,2})-(\d{1,2}-)?(\d{4}$)/ ) { - ( $m, $y ) = ( $1, $3 ); - } - my $return = qq!!; - for ( 2001 .. 2037 ) { - $return .= "county; - $countyflag=1 if $c->{county}; - #push @{$cust_main_county{$c->country}{$c->state}}, $c->county; - #$cust_main_county{$c->country}{$c->state}{$c->county} = 1; - $cust_main_county{$c->{country}}{$c->{state}}{$c->{county}} = 1; - } -# } - $countyflag=1 if $selected_county; - - my $script_html = < - function opt(what,value,text) { - var optionName = new Option(text, value, false, false); - var length = what.length; - what.options[length] = optionName; - } - function ${prefix}country_changed(what) { - country = what.options[what.selectedIndex].text; - for ( var i = what.form.${prefix}state.length; i >= 0; i-- ) - what.form.${prefix}state.options[i] = null; -END - #what.form.${prefix}state.options[0] = new Option('', '', false, true); - - foreach my $country ( sort keys %cust_main_county ) { - $script_html .= "\nif ( country == \"$country\" ) {\n"; - foreach my $state ( sort keys %{$cust_main_county{$country}} ) { - my $text = $state || '(n/a)'; - $script_html .= qq!opt(what.form.${prefix}state, "$state", "$text");\n!; - } - $script_html .= "}\n"; - } - - $script_html .= <= 0; i-- ) - what.form.${prefix}county.options[i] = null; -END - - foreach my $country ( sort keys %cust_main_county ) { - $script_html .= "\nif ( country == \"$country\" ) {\n"; - foreach my $state ( sort keys %{$cust_main_county{$country}} ) { - $script_html .= "\nif ( state == \"$state\" ) {\n"; - #foreach my $county ( sort @{$cust_main_county{$country}{$state}} ) { - foreach my $county ( sort keys %{$cust_main_county{$country}{$state}} ) { - my $text = $county || '(n/a)'; - $script_html .= - qq!opt(what.form.${prefix}county, "$county", "$text");\n!; - } - $script_html .= "}\n"; - } - $script_html .= "}\n"; - } - } - - $script_html .= < -END - - my $county_html = $script_html; - if ( $countyflag ) { - $county_html .= qq!'; - } else { - $county_html .= - qq!!; - } - - my $state_html = qq!'; - - $state_html .= ''; - - my $country_html = qq!'; - - ($county_html, $state_html, $country_html); - -} - sub success_default { #html to use if you don't specify a success file <<'END'; Signup successful