|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/softechgrp/login/new/ |
Upload File : |
#!/usr/local/bin/perl -w
# sub-libShop.cgi
print "\n";
###
sub getMenu{
@menuItems=('Home','Services','Prices','Message_board','Contact_us','Register','Shop','Forums');
#$menu="<a href=\"$domain\"><font size='2' face='verdana' color='#191970'>Home</font></a><br>";
foreach(@menuItems){
if($_ eq 'Message_board'){
$menprogUrl="http://www.dmscripts.com/cgibin/DMguest.cgi";
#c#$menprogUrl="http://localhost/cgi-bin/DMguest.cgi";
}
elsif($_ eq 'Register'){
$menprogUrl="http://www.dmscripts.com/cgibin/dmRegister.cgi";
#c#$menprogUrl="http://localhost/cgi-bin/dmRegister.cgi";
}
elsif($_ eq 'Shop'){
$menprogUrl="http://www.dmscripts.com/cgibin/DMdatabase.cgi";
#c#$menprogUrl="http://localhost/cgi-bin/DMdatabase.cgi";
}
elsif($_ eq 'Forums'){
$menprogUrl="http://www.dmscripts.com/cgibin/DMforum2.cgi";
#c#$menprogUrl="http://localhost/cgi-bin/DMforum2.cgi";
}
else{
$menprogUrl="http://www.dmscripts.com/cgibin/DMwebsite.cgi";
#c#$menprogUrl="http://localhost/cgi-bin/DMwebsite.cgi";
}
$menu .="<a href=\"$menprogUrl?menu=$_\"><font size='2' face='verdana' color='#191970'>$_</font></a><br>" if $_ ne $formData{'menu'};
}
}
###
sub progMenu{
foreach(@_){
my(@asd)=split(',',$_);
$link .="<a href=\"$progUrl?action=$asd[0]&thread=$asd[1]&msgNum=$asd[2]&indent=$asd[3]&lineSeq=$asd[4]&view=$asd[5]&forum=$asd[6]&menu=$asd[7]\"><font face='verdana' size='2' color='black'>$asd[0]</font></a> ";
}
}
###
sub tablerow2{
my($entry1,$entry2,$entry3)=@_;
$line="
<tr>
<td align='left' width=\"60%\" height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='teal'>
$entry1
</font>
</td>
<td align='left' width=\"20%\" height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='teal'>
$entry2
</font>
</td>
<td align='left' width=\"20%\" height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='teal'>
$entry3
</font>
</td>
</tr>";
push(@tableLines,$line);
$output=join('',"<table border='0' cellpadding='0' cellspacing='1' width='100%'>@tableLines</table>");
}
###
sub addVerts{
my(@CordNums)=@_;
while(@CordNums){
my($line)=shift(@CordNums);
unshift(@CordNums3,$line);
}
foreach $ordNum1(@CordNums3){
$ordNum1=~/:(\d+)$/;
$eVal=($1-1) * 6;
push(@bVals,$eVal);
}
foreach $vert(@bVals){
foreach $ordNum(@CordNums3){
$ordNum=~/:(\d+)$/;
$bVal2=$1 * 6;
if($vert < $bVal2){
@chars=split('',substr($ordNum,0,$bVal2));
$chars[$vert]="\|";
$newChars=join('',@chars);
$ordNum=~s/^.{$bVal2}//;
$ordNum="$newChars$ordNum";
}
else{
$line=shift(@CordNums3);
$line=~s/(\|)\#+(<)/$1\_$2/;
$line=~s/\#/ /g;
unshift(@ordNums4,$line);
last;
}
}
}
}
###
sub makeThread2{
local($rnumPairs,$rbackTrack)=@_;
foreach(@{$rbackTrack}){
my($numA,$numB)=split('~',$_);
$cnt=0;
foreach(@{$rnumPairs}){
my($numC,$numD)=split('~',$_);
if($numA == $numD){
push(@ordNums,$_);
unshift(@{$rbackTrack},$_);
splice(@{$rnumPairs},$cnt,1);
&makeThread2(\@{$rnumPairs},\@{$rbackTrack});
}
$cnt++;
}
}
}
###
sub opMsg{
my($lineSeq,$lineBrk,$minusIndent,$author)=@_;
@lineSeqNums=split('~',$lineSeq);
@indentVals=(0);
foreach $pair(@lineSeqNums){
($msgNum,$linePartNum)=split(':',$pair);
@msgParts=split('~',$msgs{$msgNum}->{'message'});
push(@msgLines,"-$msgNum-$msgParts[$linePartNum]$lineBrk");
foreach(@indentVals){
if($msgNum == $_){
$flag=1;
}
}
if($flag < 1 || $msgNum == 0){
push(@indentVals,$msgNum);
#push(@authors,$msgs{$msgNum}->{'author'});
$authors{$msgNum}=$msgs{$msgNum}->{'author'};
}
$flag=0;
}
@colours=("#8a2be2","#00008b","#a52a2a","#008000","#d2691e","#9400d3","#dc143c",
"#008b8b","#b8860b","#8b008b","#cd5c5c","#778899","#800000","#0000cd",
"#808000","#cd853f","#800080","#8b4513","#2e8b57","#a0522d","#708090");
my($count)=scalar(@indentVals);
foreach(sort {$a <=> $b} @indentVals){
$indents{$_}=$count;
$colors{$_}=$colours[$count];
$count--;
}
while(@msgLines){
$line=shift(@msgLines);
#$line=~s/(#\d+#:\d+)$//;
#$nu=$1;
#$line=~s/ +$//;
#$endNums .="$nu|";
#print "$line-$nu<br>";
$line=~s/NEWLINE/\\n/g;
$line=~s/TiLdE/\~/g;
$line=~s/PIPE/\|/g;
$line=~s/SEMICOLON/;/g;
$line=~s/BSLASH/\\/g;
$line=~s/AMPERS/&/g;
$line=~s/BACKTICK/`/g;
$line=~s/\r(#\d+#:\d+)$/$1/;
$line=~s/^-(\d+)-//;
$indent=">" x ($indents{$1}-$minusIndent);
$line2="$indent$line";
push(@indentedLines2,$line2);
$finMsg2=join('',@indentedLines2);
#$shtName=substr($authors{$1},0,15);
if($colors{$1} ne $cpCols){
$line="<tr><td bgcolor='#f0f0f0' align='left' valign='top' width='15%'><font face='arial' size='2' color='$colors{$1}'>$authors{$1}</font></td><td bgcolor='#f0f8ff' align='left' valign='top'><font face='arial' size='2' color='$colors{$1}'> $indent $line</font></td></tr>";
}
else{
$line="<tr><td bgcolor='#f0f0f0' align='left' valign='top' width='15%'><font face='arial' size='2' color='$colors{$1}'> </font></td><td bgcolor='#f0f8ff' align='left' valign='top'><font face='arial' size='2' color='$colors{$1}'> $indent $line</font></td></tr>";
}
$cpCols=$colors{$1};
push(@indentedLines,"$line");
$finMsg=join('',"<table border='0' cellpadding='0' cellspacing='0' width='100%'>@indentedLines</table>");
}
#chop($endNums);
}
###
sub makeThreadDiagram{
my($refmlinks,$refleftovers)=@_;
foreach $message(@{$refmlinks}){
$message=~/^(\d+)/g;
$messagesNum=$1;
foreach $leftover(@{$refleftovers}){
$leftover=~/^\d+~(\d+)~/g;
$leftoversNum=$1;
if($messagesNum == $leftoversNum){
$message .="#$leftover" if $leftover=~/.+/g;
$leftover='';
}
}
}
foreach(@{$refmlinks}){
if($_=~/#/g){
$cnt=0;
@innerEls=split('#',$_);
foreach(@innerEls){
push(@newLinks,$innerEls[$cnt]);
$cnt++;
}
}
else{
push(@newLinks,$_);
}
}
foreach(@leftovers){
if($_ ne ''){
push(@leftovers2,$_);
}
$_='';
}
&makeThread(\@newLinks,\@leftovers2) if @newLinks <= 10000;
}
###
sub makeThread{
my($newLinks,$leftovers)=@_;
@links=(@{$newLinks});
@lovers=(@{$leftovers});
&makeThreadDiagram(\@links,\@lovers);
}
###
sub formatMsg3{
my($fileMsg,$lineCount)=@_;
$fileMsg=~/^(.{50})/;
my($line)=$1;
push(@newMsgLines,"$line#$formData{'msgNum'}#");
push(@allLines,$line);
$rem=$';
$rem=~s/\r//g;
if($rem=~s/^([^ ]+)/ /){
$lastEl=pop(@allLines);
chomp($lastEl);
pop(@newMsgLines);
$lastEl="$lastEl$1";
push(@newMsgLines,"$lastEl#$formData{'msgNum'}#");
push(@allLines,$lastEl);
}
if(length($rem) > 50){
&formatMsg3($rem,$lineCount);
}
else{
$rem=~s/ +$//;
push(@newMsgLines,"$rem#$formData{'msgNum'}#");
push(@allLines,$rem);
}
}
###
sub stMsgForm{
#my($forum)=@_;
$stMsgForm="<form action=$progUrl method='post'>
Subject:<br>
<input type='text' name='subject' size='50'><br><br>
Message:<br>
<textarea rows='10' cols='70' name='message' wrap='soft'></textarea><br>
<input type='submit' name='submitStMsg' value='Post'>
<input type='hidden' name='msgNum' value='0'>
<input type='hidden' name='msgNum2' value='0'>
<input type='hidden' name='linkToMe' value='0'>
<input type='hidden' name='indent' value='0'>
<input type='hidden' name='lineSeq' value='0'>
<input type='hidden' name='forum' value='$formData{'forum'}'>
</form>";
#<input type='hidden' name='forum' value='$forum'>
}
###
sub getFileVals{
my($file)=@_;
if(-f $file && -r $file){
open(FILE,"<$file") or die("Cannot open $file for input. $!");
@lines=<FILE>;
close(FILE);
chomp(@lines);
}
my(@fldNames)=split('\|',shift(@lines));
$count=0;
while($count < @lines){
$counts=0;
foreach(@fldNames){
@vals=split('\|',$lines[$count]);
push(@fldNameVals,$fldNames[$counts],$vals[$counts]);
$msgs{$vals[4]}={@fldNameVals};
$counts++;
}
$count++;
}
}
###
sub tablerow{
my($entry1,$entry2,$entry3,$entry4,$tdsizes)=@_;
$line="
<tr>
<td align='left' width=${$tdsizes}[0] height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='#00008b'>
$entry1
</font>
</td>
<td align='left' width=${$tdsizes}[1] height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='#00008b'>
$entry2
</font>
</td>
<td align='left' width=${$tdsizes}[2] height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='#00008b'>
$entry3
</font>
</td>
<td align='right' width=${$tdsizes}[3] height='12' bgcolor='#f0f0f0' valign='middle'>
<font face='arial' size='2' color='#00008b'>
$entry4
</font>
</td>
</tr>";
#$line="<table border='0' cellpadding='0' cellspacing='1' width='100%'>$line</table>";
push(@tableLines,$line);
$output=join('',"<table border='0' cellpadding='0' cellspacing='1' width='100%'>@tableLines</table>");
}
###
sub logonPage2{
my($progUrl)=@_;
&getMenu;
&getTemplate;
my($header)= $formData{'menu'} ? "$formData{'menu'}" : "Forums";
my($header)="Logon";
my($subHeader)="To post a message in our forum, you need to enter your password.";
my($footer)="$emailLink";
my($htmloutput)="<form method='post' action=\"$progUrl\">
<font size='2' color='#a0522d' face='verdana'>
<b>Members logon.</b><br>
Your username please:<br>
<input type='text' name='username' size='20'><br>
Your password:<br>
<input type='password' name='pw' size='20'><br>
<input type='submit' name='enterforum' value='Enter Forum'>
<input type='hidden' name='action' value=\"$formData{'action'}\">
<input type='hidden' name='thread' value=\"$formData{'thread'}\">
<input type='hidden' name='msgNum' value=\"$formData{'msgNum'}\">
<input type='hidden' name='indent' value=\"$formData{'indent'}\">
<input type='hidden' name='lineSeq' value=\"$formData{'lineSeq'}\">
<input type='hidden' name='forum' value=\"$formData{'forum'}\">
</font>
</form><br>
<form method='post' action=\"$progUrl\">
<font size='2' color='#a0522d' face='verdana'>
Or you can browse without a password<br>
<b>Guests.</b><br>
<input type='submit' name='browseForum' value='Browse Forum'>
</font>
</form><br>
If you do not have a password,
<a href=\"$registerLink?menu=Register\">
<b>click here</b>
</a>
to register.<br>";
&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
}
###
sub getDate2{
@months=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
($sec,$min,$hr,$day,$month,$year,$day_Of_Week,$julianDate,$dst)=localtime;
$year+=1900;
$date="$day $months[$month], $year";
}
###
sub checkFields{
my($formData)=@_;
@pairs=split('&',$formData);
foreach $pair(@pairs){
$pair=~s/\+/ /g;
if($pair=~m/(.+)=$/){
$error=1;
$errorHeader .="Error: The \"$1\" field is blank<br>";
}
}
if($error == 1){
print "$errorHeader<br>$formData";
exit;
}
}
###
sub getPage{
my($header,$subHeader,$htmloutput,$footer)=@_;
&getMenu;
&getTemplate;
&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
}
###
sub getCookie2{
if(%cookies=fetch CGI::Cookie){
if($cookies{'foo'}->value!~/.+/ && !$formData{'sch'}){
&logonPage2($progUrl);
exit;
}
elsif(defined($cookies{'foo'}->value)){
$cookies{'foo'}->value=~/.+=(.+)$/;
$username=$1;
}
}
}
###
sub getCookie{
if(%cookies=fetch CGI::Cookie){
if($cookies{'foo'}->value!~/.+/ && !$formData{'sch'}){
&logonPage($progUrl);
exit;
}
elsif(defined($cookies{'foo'}->value)){
$cookies{'foo'}->value=~/.+=(.+)$/;
$username=$1;
}
}
else{
&logonPage($progUrl);
exit;
}
}
###
sub logonPage{
my($progUrl)=@_;
&getMenu;
&getTemplate;
my($header)= $formData{'menu'} ? "$formData{'menu'}" : "Shop";
my($subHeader)="To use a shopping cart you need to enter your password.";
my($footer)="$emailLink";
my($htmloutput)="<form method='post' action=\"$progUrl\"><font size='2' color='#a0522d' face='verdana'><b>Members logon.</b><br>
Your username please:<br>
<input type='text' name='username' size='20'><br>Your password please:</font><br><input type='password' name='pw' size='20'><br><input type='submit' name='entersite' value='Enter Shop'></form><br>
<form method='post' action=\"$progUrl\"><font size='2' color='#a0522d' face='verdana'>Or you can browse without a password<br><b>Guests.</b></font><br><input type='hidden' name='action' value='Shop'><input type='submit' name='browse' value='Browse Shop'></form><br>If you do not have a password, <a href=\"$registerLink?menu=Register\"><b>click here</b></a> to register.<br>";
&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
}
###
sub cartJobLinks{
my($viewLink)=@_;
$links="<a href=\"$progUrl?view=viewCart&item=$viewLink\">View Cart</a> - <a href=\"$progUrl?empty=emptyCart&item=$viewLink\">Empty Cart</a> - <a href=\"$progUrl?action=checkout&item=$viewLink\">Checkout</a> - <a href=\"$domain\">Home</a>";
}
###
sub getLinks{
my($path)=@_;
my(@directories)=split('\/',$path);
while(@directories){
my($dirString)=shift(@directories);
push(@linkString,"$dirString/");
$link=join('',@linkString);
my($backLink) .=$dirString."/";
if(@directories == 0){
$dirString=~s/\..+$//;
$dirString=~s/_/ /;
$string=$dirString;
last;
}
$dept="<font face='verdana' size='2' color='#a0522d'><a href=\"$progUrl?action=$link\">$dirString</a> >> </font>";
push(@depts,$dept);
}
$string=~s/_/ /;
$location="You arrived here through:<br><table border='0' cellspacing='0' cellpadding='0' width='100%'><tr><td align='left' width='30%' bgcolor='#faebd7' valign='middle'><b>@depts <font face='verdana' size='2' color='#a0522d'>$string</font></b></table>";
#print "$location";
#print "<table border='0' cellspacing='0' cellpadding='0' width='100%'><tr><td align='left' width='30%' bgcolor='#faebd7' valign='middle'>@depts <font face='verdana' size='2' color='#a0522d'>$string</font></table>";
}
###
sub displayCart{
my($username,$backLink)=@_;
$notWantedbackLink=substr($backLink,0,index($backLink,"S"));
$backLink=~s/^$notWantedbackLink//;
my(@itemDetails);
&getLinks($backLink);
##################
#&getTemplate;
##################
my($file)="$cartDir$username.txt";
if(-e $file && -s $file > 0){
open(CART,"<$file")or die("Can't open $file for read. $!");
while(<CART>){
local($dept,$id,$itemname,$price,$taxable,$qty,$fullprice)=split(':',$_);
$dept=~s/[^\d]//g;
$total+=$fullprice;
$remove="<a href=\"$progUrl?back=$backLink&item=$.&remove=$file&user=$username\">Remove</a>";
sprintf('%2.f',$price);
$price="\$$price";
&tablelines($itemname,$qty,$price,$fullprice,$remove,'');
push(@lines,$line);
}
close(CART);
my($header)="<b>$username.</b> Your shopping cart contains the following items:";
my($subheader)="<b>Your shopping cart contains:</b>";
$htmloutput="@lines";
$back="<a href=\"$progUrl?action=$backLink\">Continue shopping</a>";
&tablelines('','','Total:',$total,'');
push(@lins,$line);
if($flag){
$string=substr($cookies{'foo'}->value,1,length($cookies{'foo'}->value));
$string=~tr/+/ /;
my(@pairs)=split('&',$string);
@pairs=(@pairs,'Name on Credit Card','Credit Card Number');
&txtbxform(\@pairs);
$shopperDetails=join('',@formlines);
&cartJobLinks($backLink);
#@selects=('Credit Card type','Expiry month','Expiry year','Delivery options');
@ccTypes=('Mastercard','Visa','American Express');
@ccExpMonths=('01','02','03','04','05','06','07','08','09','10','11','12');
@ccExpYears=('2000','2001','2002','2003','2004','2005');
@deliveryOpts=('Pick up','First class: $14.95','Second class: $11.95','Third class: $8.95');
&createSelect(\@ccTypes,\@ccExpMonths,\@ccExpYears,\@deliveryOpts);
$footer="@lins<br>$links - $back<br><br>$shopperDetails<br>$type $exp";
$ct=0;
shift(@selects);
foreach(@mens){
$footer .="<table border='0' cellpadding='1' cellspacing='1' width='100%'><tr><td align='right' width='33%' bgcolor='#f0f8ff'><font face='verdana' size='2' color='#a0522d'>$selects[$ct]: select</font></td><td bgcolor='#faebd7'>$_</td></tr></table>";
$ct++;
}
$footer="<form action=\"$progUrl\" method='post'>$footer<input type='submit' name='submitData' value='Submit'><input type='hidden' name='item' value='buy'></form>";
}
else{
&cartJobLinks($backLink);
$footer="@lins<br>$links - $back";
}
##################
&getMenu;
&getTemplate;
&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
##################
}
else{
$header="Shop";
$htmloutput="Your shopping cart is empty<br><a href=\"$progUrl?action=$backLink\">Continue shopping...</a>";
&getMenu;
&getTemplate;
&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
}
}
###
sub outputPage{
my($dir,$dir2,$backLink,$li)=@_;
&getLinks($dir);
&cartJobLinks($dir);
&getTemplate;
&prSchForm($dir2);
&getMenu;
my($header)="Shop";
my($subHeader)="$location$schForm";
my($htmloutput)="$li";
my($footer)="$links - $backLink";
&getResultPage($header,$subHeader,$menu,$htmloutput,$footer);
exit;
}
###
sub createSelect{
$cnt=1;
foreach(@_){
foreach(@{$_}){
push(@options,"<option value=\"$_\">$_");
}
push(@mens,"<SELECT name=\"cat$cnt\" size='1'>@options</select>");
@options='';
$cnt++;
}
}
###
sub txtbxform{
my($refpairs)=@_;
foreach $fieldname(@{$refpairs}){
($fieldname,$value)=split('=',$fieldname);
$form="<table border='0' cellpadding='1' cellspacing='1' width='100%'><tr><td align='right' width='33%' bgcolor='#f0f8ff'><font face='verdana' size='2' color='#a0522d'>$fieldname:</font><td bgcolor='#faebd7'><input type='text' size='50' name='$fieldname' value='$value' maxlength='40'></table>";
push(@formlines,$form);
}
}
###
sub deleteCart{
my($username,$back)=@_;
my($file)="$cartDir$username.txt";
if(-e $file){
$header="Shop";
&getLinks($back);
$htmloutput="Your cart has been emptied<br><a href=\"$progUrl?action=$back\">Continue Shopping...</a>";
&getMenu;
&getTemplate;
&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
unlink($file);
}
else{
&getLinks($back);
$header="Shop";
$htmloutput="There's no cart to empty yet<br><a href=\"$progUrl?action=$back\">Continue shopping...</a>";
&getMenu;
&getTemplate;
&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
}
}
###
sub getPgVars{
my($refCats,$refHeader,$refSubHeader,$refFooter,$refLink)=@_;
my($subcat);
my(@lines);
##################
&getMenu;
##################
&getTemplate;
foreach(@{$refCats}){
$descripts=$descripts{$_};
$subcat=$_;
$subcat=s/(\..+)$//g;
$line="<tr><td align='left' width='30%' bgcolor='#faebd7' valign='middle'><font face='verdana' size='2' color='#a0522d'><a href=$progUrl?action=${$refLink}$_$1>$_</a></td><td align='left' width='70%' bgcolor='#f0f8ff' valign='top'><font face='verdana' size='2' color='#a0522d'> $descripts</font></td></tr>";
push(@lines,$line);
}
local($htmloutput)="<table border='0' cellspacing='1' cellpadding='0' width='100%'>@lines</table>";
&getResultPage(${$refHeader},${$refSubHeader},$menu,$htmloutput,${$refFooter});
}
###
sub getTemplate{
open(TEMP,"<$templatefile")or die("Cannot open $templatefile for input: $!");
my(@templatepage)=<TEMP>;
close(TEMP);
$resultpage=join('',@templatepage);
}
###
sub getResultPage{
my($header,$subHeader,$menu,$htmloutput,$footer)=@_;
$resultpage=~s/HEADER/$header/;
$resultpage=~s/SUBHEADER/$subHeader/g;
$resultpage=~s/MENU/$menu/g;
$resultpage=~s/HTMLOUTPUT/$htmloutput/g;
$resultpage=~s/FOOTER/$footer/g;
print "$resultpage";
}
###
sub getFileHash{
my($file)=@_;
&csvFileParse($file) if -f $file && -r $file;
my(@fldNames)=split('\|',shift(@names));
$count=0;
while($count < @names){
$counts=0;
foreach(@fldNames){
@vals=split('\|',@names[$count]);
push(@qwer,$fldNames[$counts],$vals[$counts]);
$counts++;
}
$count++;
@asdf=splice(@qwer,0,$#qwer+1);
$items{$asdf[1]}={@asdf};
}
}
###
sub csvFileParse{
my($file)=@_;
open(FILE,"<$file") or die("Cannot open $file for input. $!\n");
while(<FILE>){
chomp;
push(@names,$_);
}
close(FILE);
}
###
sub tablelines{
my($entry1,$entry2,$entry3,$entry4,$entry5,$entry6)=@_;
$line="<table border='0' cellpadding='0' cellspacing='1' width='100%'>
<tr>
<td align='left' width='20%' bgcolor='#faebd7' valign='middle'>
<font face='verdana' size='2' color='#a0522d'>
$entry1
</font>
</td>
<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
<font face='verdana' size='2' color='#a0522d'>
$entry2
</font>
</td>
<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
<font face='verdana' size='2' color='#a0522d'>
$entry3
</font>
</td>
<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
<font face='verdana' size='2' color='#a0522d'>
\$" .sprintf('%.2f',$entry4) ."
</font>
</td>
<td align='right' width='20%' bgcolor='#faebd7' valign='middle'>
<font face='verdana' size='2' color='#a0522d'>
$entry5
</font>
</td>
$entry6
</tr>
</table>";
}
#### DMregister.cgi subroutines ####################################################
###
sub printForm{
my($refpairs,$refHeader,$refsubmitButtonName,$refprog)=@_;
&txtbxform($refpairs);
$header=${$refHeader};
$subheader= "Please complete the form below and click on the submit button.
<form method='post' action='dmRegister.cgi'>";
$htmloutput=join('',@formlines);
$footer= "<input type='submit' value='Click here to submit' name='${$refsubmitButtonName}'>
</form>";
######################
&getMenu;
&getTemplate($templatefile);
######################
&getResultPage($header,$subheader,$menu,$htmloutput,$footer);
}
###
sub getResultPage{
my($header,$subHeader,$menu,$htmloutput,$footer)=@_;
$resultpage=~s/HEADER/$header/;
$resultpage=~s/SUBHEADER/$subHeader/g;
$resultpage=~s/MENU/$menu/g;
$resultpage=~s/HTMLOUTPUT/$htmloutput/g;
$resultpage=~s/FOOTER/$footer/g;
print "$resultpage";
}
###
sub setPw{
my($formData)=@_;
@alphaNums=("A".."Z","a".."z",0..9);
for(1..9){
$char=$alphaNums[int(rand(62))];
push(@pwChars,$char);
}
$password=join('',@pwChars);
@randomList=("a".."z",0..9);
$randomAlphNum="@randomList";
$randomAlphNum=~s/ //g;
for(0..1){
$salt .=substr($randomAlphNum,int(rand(36)),1);
}
$password .=$salt;
$encPass=crypt($password,$salt);
$data=substr($formData,0,rindex($formData,"&"));
#print "$password<br>$encPass<br>$salt<br>$data<br>$formData{'Choose a username'}";
#print "$password<br>";
open(PASS,">>$pwFile") or die("Cannot open $pwFile for append. $!");
print PASS "$encPass&$data\n";
close(PASS);
#c############### MAIL
$recipient="$formData{'Email'}";
$from="DMscriptsDMscriptsDMscripts";
$replyto="davemortimer\@one.net.au";
$mailSubject="New Registration";
$mailMessage="Thank you for your registration $formData{'First name'}\nYour password is: $password";
#&sndMail(\@recipients,$replyto,$mailSubject,$mailMessage);
&sndMail($recipient,$from,$replyto,$mailSubject,$mailMessage);
open(MAIL,"|$mailprog -t") or die("Cannot access $mailprog: $!\n");
print MAIL "To: $recipient\n";
print MAIL "Reply-to: $replyto\n";
print MAIL "Subject: $mailSubject\n\n";
print MAIL "$mailMessage\nReturn to http://www.dmscripts.com/";
close(MAIL);
#c############### MAIL
#print <<endHTML;
#<h2>Thank You</h2>
#Thank you for writing. Your mail has been delivered.<p>
#Return to our <a href="index.html">home page</a>.
#</body></html>
#endHTML
#while(($key,$val)=each(%formData)){
#print "$key = $val<br>";
#}
}
###
sub sndMail{
my($recipient,$from,$replyto,$mailSubject,$mailMessage)=@_;
open(MAIL,"|$mailprog -t") or die("Cannot access $mailprog: $!\n");
print MAIL "To: $recipient\n";
print MAIL "From: $from\n";
print MAIL "Reply-to: $replyto\n";
print MAIL "Subject: $mailSubject\n\n";
print MAIL "$mailMessage\nReturn to $domain";
close(MAIL);
}
##########################################################################################
### Search subroutines ###################################################################
### &search($schRtDir,$formData{'query'});
sub search{
my($schRtDir,$schQuery)=@_;
local($file,$dir,@dirs);
chdir($schRtDir)or die("Can't change directories to $schRtDir: $!");
my(@filenames)=''; # Remember to reset
opendir(DIR,$schRtDir)or die("Cannot open $dir: $!"); # @filenames to null.
while($fil=readdir(DIR)){
unless(($fil=~/^\.$/) || ($fil=~/^\.\.$/)){
push(@filenames,$fil);
}
}
foreach(@filenames){
if(-d && -r){
push(@dirs,$_);
}
$type= (-f) ? file : directory;
if(-f){
$size=sprintf('%.2f',(-s)/1024)." kb";
$file="$schRtDir$_";
open(FILE,"<$file")or die("Can't open $file for input: $!");
my(@lines)=<FILE>;
close(FILE);
&itemSearch(@lines);
}
}
foreach(@dirs){
&search("$schRtDir$_$dl",$schQuery);
}
}
###
sub itemSearch{
my(@lines)=@_;
foreach(@lines){
$cpLine=$_;
$cnt=0;
$_=~s/\|/ /g;
my(@words)=split(' ',$_);
if($formData{'searchType'} eq 'words'){
$count=0;
foreach $word(@words){
@sepwords=split(' ',$formData{'query'});
foreach(@sepwords){
if($word eq $_){
$count++;
}
}
}
if($count > 0){
$schFlag=1;
push(@schLines,"$file|$cpLine");
@lineAtts=split('\|',$cpLine);
$schOutput .="<b>$count:</b> $file<br>$cpLine<br>$form$endForm<br>";
}
}
elsif($formData{'searchType'} eq 'phrase'){
$schFlag=1;
&findPhrase($_);
push(@schLines,"$file|$cpLine") if $cnt > 0;
}
}
}
###
sub findPhrase{
my($string)=@_;
if($string=~/($formData{'query'})/g){
&findPhrase($');
$cnt++;
}
}
###
sub getDate{
@months=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@time=($sec,$min,$hr,$day,$month,$year,$day_Of_Week,$julianDate,$dst) = localtime($mtime);
$year+=1900;
$date="$day, $months[$month], $year";
}
###
sub prSchForm{
my($schAction)=@_;
#c#$schForm="<form action='http://localhost/cgi-bin/DMdatabase.cgi' method='post'>
$schForm="<form action=\"$progUrl\" method='post'>
Search our database. Enter your search term or phrase.<br>
<input type='text' name='query' size='55'><br>
As seperate words:<input type='radio' name='searchType' value='words' checked>
As a phrase:<input type='radio' name='searchType' value='phrase'>
<input type='hidden' name='item' value='1'>
<input type='hidden' name='action' value=$schAction>
<input type='hidden' name='menu' value='Shop'>
<input type='submit' name='sch' value='Search'>
</form>";
}
###
sub addForm{
my($action,$id,$name,$price,$taxable,$schFlag)=@_;
$form="<form action=\"$progUrl\" method='post'>
Qty: <input type='text' name='qty' size='3' value='1'>
<input type='hidden' name='item' value=\"$action:$id:$name:$price:$taxable\">
<input type='hidden' name='back' value=\"$formData{'action'}\">
<input type='hidden' name='action' value=\"$action\">
<input type='hidden' name='schResFlag' value=\"$schFlag\">
<input type='submit' name='addToCart' value='Add'>";
$endForm="</form>";
}