#!/usr/bin/perl -w use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; use Template; use survey; use Email::Valid; use HTML::FillInForm; our $cgi = CGI->new(); my $tmpl_dir = '/home/f/a/falcon/public_html/survey/tmpls'; my $survey = $ARGV[0]; $survey =~ s%/%%g; $survey =~ s/\s+//g; $survey =~ s/\0//g; $survey = $survey . '.html'; my $file = $tmpl_dir . '/' . $survey; unless(-e $file) { die 'Invalid survey name.'; } my $vars; my $out; my $errors; my $params = params_hash($cgi); my $fif = new HTML::FillInForm; my $tt = Template->new(INCLUDE_PATH => $tmpl_dir); if($params->{posted}) { die "missing survey_id" unless($params->{survey_id}); my @all_qs = grep(/^Q(.)?_.+/, keys(%{$params})); my @required_qs = grep(/^QR_.+/, @all_qs); my @optional_qs = grep(/Q_.+/, @all_qs); foreach (@required_qs) { $errors->{"$_"} = 1 unless (defined($params->{$_}) && $params->{$_} ne ''); } $errors->{email} = 1 unless(Email::Valid->address($cgi->param('email'))); if($errors) { $vars->{error} = 1; } else { my $dbh = db_connect(); my $taker_id = add_taker($dbh, $params->{email}); save_response($dbh, $params->{survey_id}, $taker_id, \@all_qs, $params); # print "Added $params->{email} / $taker_id"; print $cgi->redirect('thanks.html'); cleanup($dbh); exit; } } print $cgi->header(); $tt->process($survey, $vars, \$out) || die "Template process failed: ", $tt->error(), "\n"; if($errors) { $out = $fif->fill(scalarref => \$out, fdat => $params); $out = highlight_errors(\$out, $errors) } print $out;