#!/usr/bin/perl
#
# Purpose:
#
# CGI Appwizard - Thu Oct 23 09:34:58 IST 1997
#
#################### CONFIG SECTION #####################
# DATAFILE
$DATAFILE = '/hsphere/local/home/iarc2/iarc.ie/wwwlist.txt';
$TEMPLATE_MAIN = '/hsphere/local/home/iarc2/iarc.ie/template.main';
$TEMPLATE_LAYOUT = '/hsphere/local/home/iarc2/iarc.ie/template.layout';
$SCRIPT_NAME = 'biographical.cgi';
$PAGE = `cat $TEMPLATE_MAIN` || &Error("Couldn't get main template $TEMPLATE_MAIN");
$LAYOUT_TEMPLATE = `cat $TEMPLATE_LAYOUT`|| &Error("Couldn't get layout template $TEMPLATE_LAYOUT");
# EMAIL SETTINGS
$ADDRESS_FROM = 'IAA Architects Database';
$ADDRESS_TO = 'paul@archeire.com';
$ADDRESS_REPLYTO = 'paul@archeire.com';
$ADDRESS_CC = '';
$ADDRESS_BCC = '';
$SUBJECT = 'Bugger. An error.';
#########################################################
&ParseForm;
if(!$FORM{'keywords'})
{
$error_message = '
Please enter some keywords.';
&ReturnPage;
}
else
{
@keywords = split(/ +/,$FORM{'keywords'});
$DATA = `cat $DATAFILE` || &Error("Couldn't find datafile $DATAFILE");
@RECORDS = split(/\n/,$DATA);
foreach($j=1; $j<@RECORDS; $j++)
{
$match=''; # THIS IS NOT A MATCH
foreach($k=0; $k<@keywords; $k++) # CHECK IT FOR EACH KEYWORD
{
if($RECORDS[$j] =~ /$keywords[$k]/i)
{$match .= "$keywords[$k] ";} # THIS IS A MATCH
}
if($match)
{
($NAME,$CONTACT,$ADDRESS_1,$ADDRESS_2,$ADDRESS_3,$ADDRESS_4,$ADDRESS_5,$ADDRESS_6,$PHONE,$FAX,$EMAIL,$WWW) = split(/\t/,$RECORDS[$j]);
&FormatRecord;
}
}
if(!$LAYOUT)
{$error_message = 'No matches found.';}
&ReturnPage;
}
################### UTILITY FUNCTIONS ###################
sub FormatRecord
{
$THIS_LAYOUT = $LAYOUT_TEMPLATE;
$THIS_LAYOUT =~ s/###MATCH###/$match/g;
$THIS_LAYOUT =~ s/###NAME###/$NAME/g;
$THIS_LAYOUT =~ s/###CONTACT###/$CONTACT/g;
$THIS_LAYOUT =~ s/###ADDRESS_1###/$ADDRESS_1/g;
$THIS_LAYOUT =~ s/###ADDRESS_2###/$ADDRESS_2/g;
$THIS_LAYOUT =~ s/###ADDRESS_3###/$ADDRESS_3/g;
$THIS_LAYOUT =~ s/###ADDRESS_4###/$ADDRESS_4/g;
$THIS_LAYOUT =~ s/###ADDRESS_5###/$ADDRESS_5/g;
$THIS_LAYOUT =~ s/###ADDRESS_6###/$ADDRESS_6/g;
$THIS_LAYOUT =~ s/###PHONE###/$PHONE/g;
$THIS_LAYOUT =~ s/###FAX###/$FAX/g;
$THIS_LAYOUT =~ s/###EMAIL###/$EMAIL/g;
$THIS_LAYOUT =~ s/###WWW###/$WWW/g;
$LAYOUT .= $THIS_LAYOUT;
}
sub Debug
{
# DUMPS A STRING TO A BROWSER AS HTML
if(!$DEBUG_USED)
{print "Content-type: text/html\n\n";}
$DEBUG_USED = 1;
print "$_[0]";
}
sub Error
{
# RETURNS A USER LEVEL ERROR MESSAGE WITH THE SYSTEM HEADER AND FOOTERS
print "Content-type: text/html\n\n";
print"Error
$_[0]";
die "$_[0]";
}
sub ParseForm
{
local($name, $value, $buffer);
if($ENV{REQUEST_METHOD} =~ /get/i) # FIND REQUEST METHOD
{$buffer = $ENV{QUERY_STRING};}
else
{read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});}
@pairs = split(/&/, $buffer); # SPLIT INTO NAME_VALUE PAIRS
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /; # URL UNENCODE
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s///g;
$FORM{$name} = $value; # ASSIGN TO FORM
}
}
sub ReturnPage
{
# PARSE THE TEMPLATE
$PAGE =~ s/###SCRIPT_NAME###/$SCRIPT_NAME/g;
$PAGE =~ s/###ERROR_MESSAGE###/$error_message/g;
$PAGE =~ s/###KEYWORDS###/$FORM{'keywords'}/g;
$PAGE =~ s/###LAYOUT###/$LAYOUT/g;
# RETURN THE PAGE
print "Content-type: text/html\n\n";
print "$PAGE";
}
sub SendEntry
{
open (MAIL, "| /usr/sbin/sendmail -t");
print MAIL << "END_OF_MAIL";
From: $ADDRESS_FROM
Reply-To: $ADDRESS_REPLYTO
To: $ADDRESS_TO
Cc: $ADDRESS_CC
Bcc: $ADDRESS_BCC
Subject: $SUBJECT
$_[0]
END_OF_MAIL
close MAIL;
}