#!/usr/bin/perl use strict; use CGI; use Mail::Sendmail; use File::Basename; use MIME::Base64; my $SERVER="http://".$ENV{'SERVER_NAME'}; my $form=$SERVER.$ENV{'SCRIPT_NAME'} || $SERVER.$ENV{'PATH_INFO'}; my $datapath=dirname $0; my $progname=basename$0; my $smtp = "appsmtp.ottawa.ca"; my ($sec,$min,$hr,$day,$mon,$yr)=(localtime); my $today=sprintf("%04d-%02d-%02d %02d:%02d", $yr+1900, $mon+1, $day, $hr, $min); my $date; my $start_hide; my $end_hide; my $xls_file = "$datapath/working/file.xls"; my %in=(); my %str=(); my %check=(); my $typetext="text"; my $typetextarea="textarea"; my $closetextarea="<\/textarea>"; my $border=0; my $SENDSTR; my $reset; my $ATTACHSTR; my $MAIL_TO='bryson.connolly@ottawa.ca'; my $submitstr; my %mainbody; my $formid; my $debug =0; my $new_form; #------------------ #read form input #------------------ my $query=new CGI; my $action=$query->param('action'); my $lang=$query->param('lang'); $formid=&newformid; if ($lang ne "_fr") { $lang="_en"; $SENDSTR="Submit"; $reset="Reset"; $ATTACHSTR=''; } else { $SENDSTR="Soumettre"; $reset="reset"; $ATTACHSTR=''; } my $tpl = "registration$lang.html"; $submitstr="  "; $reset="  "; print "Content-type: text/html\n\n"; &getdata; if ($action eq $SENDSTR) { $typetext="hidden"; $typetextarea="input type=hidden"; $closetextarea=""; %str=%in; $submitstr=""; $reset=""; $ATTACHSTR=""; $date=$today; mailto($query); } my $tmp= &readhtml("$datapath/$tpl"); #$tmp=&doclean($tmp); print $tmp; exit; #return htmlfile from template sub readhtml { my $selectname; my $retfile; open (DATA, "@_") || print "@_ file not found"; while () { #parse input data #input type must be specified #type specified right after ]?name=)"?(\w+)"?(.*?>)|$str{$2}|ig; #s|]?)name=(\w+)(.*?>)|<$typetextarea $1 name=$2 value="$in{$2}"$3$in{$2}|ig; s|)|<$typetextarea $1 name=$2 value="$in{$2}" $3 $in{$2}|ig; s||$closetextarea|ig; s|()/$1$2$3 $check{$selectname.$2}$4/ig; s|| package temp; my $tmp; if ( ($check{$selectname.$1}) or ($typetext eq "text") ) { $tmp=""; } $tmp |sgeix; $retfile.=$_; } close (DATA); return $retfile; } sub getdata { # $_ is the form element name and $in{$_} is the contents. if ($action eq $SENDSTR) { open(OUT,">>$xls_file") || print "could not open $xls_file" ; } foreach ($query->param) { $in{$_} = $query->param($_); if ($_=~/^c_/) { $check{$_}="CHECKED" } #checkbox if ($_=~/^r_/) { $check{$_.$in{$_}}="CHECKED" } #radio if ($_=~/^s_/) { $check{$_.$in{$_}}="SELECTED" } #Select if ($action eq $SENDSTR) { $in{$_}=~s/\r\n/ /g; if ($_ !~/action|lang/) { # don't print these fields to XLS file print OUT "$in{$_}\t"; } } $in{$_}=~s/\r\n/
/g || $in{$_}=~s/
/\n/g; $in{$_}=~s/"/"/g; $in{$_}=~s/'/’/g; $in{$_}=~s/\$/&\#36;/g; } # end foreach if ($action eq $SENDSTR) { print OUT "$today\t"; print OUT "\n"; close(OUT); } } sub mailto { blah blah,,,send mail } sub newformid { use File::CounterFile; $File::CounterFile::DEFAULT_DIR="$datapath/working"; my $c = File::CounterFile->new("counter.dat"); return $c->inc; } sub doclean { #remove the hidden fields and submit/reset buttons ($_)=@_; undef $/; s|||imsg; s|||imsg; $/="\n"; return $_; }