#!/usr/bin/perl ############################### # Hot Links SQL 2.1 addlink.cgi # Created by Mike Ramirez # Nothing below here is configurable ############################### require './source/headerfooter.pl'; require './source/config.pl'; require './source/get.pl'; require './lang/langset.pl'; use CGI; use DBI; my $dbh = DBI->connect("DBI:mysql:$dbname;$dbhost", $dblogin, $dbpass) || print "Could not connect to database
"; my $q = CGI->new; print $q->header; my $action = $q->param("action"); my $f_category = $q->param("category"); if ($action eq "add") {&addform} if ($action eq 'edit') {&passcheck} if ($action eq 'login') {&lookup} if ($action eq 'addlink') {&checkforduplicate} if ($action eq 'metaform') {&metaform} if ($action eq 'getmeta') {&getmeta} ################################################## sub metaform { ################################################## &header; print <<"HTML";
 $shtext1 : $altext1
$altext6:

HTML &footer; } ################################################## sub getmeta { ################################################## $url = $q->param("url"); $content = get($url); if ($content) { #Get the title $content =~ /(.*)<\/title>/ig; $usetitle = $1; $usetitle =~ s/\"//g; #remove double quotes $usetitle =~ s/\'//g; #remove single quotes #Get the description $content =~ /<META name=\"description\" content=\"(.*?)\">/i; $description = $1; $description =~ s/\"//g; #remove double quotes $description =~ s/\'//g; #remove single quotes #Get the keywords $content =~ /<META name=\"keywords\" content=\"(.*?)\">/i; $keywords = $1; $keywords =~ s/\"//g; #remove double quotes $keywords =~ s/\'//g; #remove single quotes &addform; } else {&addform} } ################################################## sub addform { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext1</td></tr> <form method=post> <tr><td class=bodytext valign=top align=right>$altext2</td><td><Select name=category class=formtext> HTML &dropdownlist; print <<"HTML"; </select><br><font size=$smalllink><a href='mailto:$adminemail?subject=$altext3'>$altext4</a></font></td></tr> <tr><td class=bodytext align=right>$altext5:</td><td><input type=text class=formtext size=30 name=sitename value=\"$usetitle\"></td></tr> HTML if ($url) { print "<tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value=\"$url\" name=url></td></tr>"; } else { print "<tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value=\"http://\" name=url></td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext7:</td><td><textarea name=description cols=40 rows=5 class=formtext>$description</textarea></td></tr> <tr><td class=bodytext align=right>$altext26:</td><td><input type=text size=35 class=formtext name=keywords value=\"$keywords\"></td></tr> HTML if ($requirerecip == 2) { print "<tr><td class=bodytext valgin=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='http://'><br>$altext28</td></tr>"; } elsif ($requirerecip == 1) { print "<tr><td class=bodytext valign=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='http://'><br>$altext29</td></tr>"; } if ($allowsiteimages == 1) { print "<tr><td class=bodytext align=right>$altext30:</td><td><input type=text size=30 class=formtext name=image></td></tr>"; } if ($allowexpire == 1) { print "<tr><td class=bodytext align=right>End Date:</td><td class=bodytext>$altext31 <input type=text size=5 class=formtext name=enddate value='None'> $altext32</td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext8:</td><td><input type=text size=30 class=formtext name=email></td></tr> <tr><td class=bodytext align=right>$altext9:</td><td><input type=text size=30 class=formtext name=name></td></tr> <tr><td class=bodytext align=right>$altext10:</td><td><input type=text size=30 class=formtext name=password></td></tr> <tr><td colspan=2 align=center><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=action value=addlink></form></table> HTML &footer; } ################################################## sub passcheck { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth> <tr><td> <table> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext12</td></tr> </table><form method=post> </td></tr> <tr><td> <table align=center> <tr><td class=bodytext>$altext13:</td><td><input type=text size=15 name=userid class=formtext></td></tr> <tr><td class=bodytext>$altext14:</td><td><input type=password size=15 name=userpass class=formtext></td></tr> <tr><td colspan=2 align=right><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=action value=login> </table> </td></tr> <tr><td> <div align=center class=bodytext><a href="$passwordscript">$altext15</a></div> </td></tr> </table> </form> HTML &footer; } ################################################## sub lookup { ################################################## my $f_id = $q->param("userid"); my $f_pass = $q->param("userpass"); my $sth = $dbh->prepare("SELECT * FROM links WHERE id = $f_id AND password = '$f_pass'") || print "could not access database"; $sth->execute(); while (my $results = $sth->fetchrow_hashref) { my $linkid = $results->{id}; my $category = $results->{category}; my $sitename = $results->{sitename}; my $url = $results->{url}; my $email = $results->{email}; my $name = $results->{name}; my $password = $results->{password}; my $description = $results->{description}; my $addedon = $results->{addedon}; my $edpick = $results->{edpick}; my $keywords = $results->{keywords}; my $activelink = $results->{activelink}; my $enddate = $results->{enddate}; my $udate = $results->{udate}; my $recipurl = $results->{recipurl}; my $affiliate = $results->{affiliate}; my $image = $results->{image}; $modifylink = "$linkid|$category|$sitename|$url|$email|$name|$password|$description|$addedon|$edpick|$keywords|$activelink|$enddate|$udate|$recipurl|$affiliate|$image"; } $sth->finish; if ($modifylink) { &editscreen; } else {&error} } ################################################## sub editscreen { ################################################## @currentline = split(/\|/, $modifylink); &header; print <<"HTML"; <br> <table width=$tablewidth> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext16</td></tr> <form action=$processscript method=post> <tr><td class=bodytext align=right>$altext2</td><td><Select name=category class=formtext> HTML &dropdownlist; print <<"HTML"; </select></td></tr> <tr><td class=bodytext align=right>$altext5:</td><td><input type=text size=30 class=formtext value='$currentline[2]' name=sitename></td></tr> <tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value='$currentline[3]' name=url></td></tr> <tr><td class=bodytext align=right>$altext7:</td><td><textarea name=description cols=40 rows=5 class=formtext>$currentline[7]</textarea></td></tr> <tr><td class=bodytext align=right>$altext26:</td><td><input type=text size=35 class=formtext name=keywords value='$currentline[10]'></td></tr> HTML if ($requirerecip == 2) { print "<tr><td class=bodytext valgin=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$currentline[14]'><br>$altext28</td></tr>"; } elsif ($requirerecip == 1) { print "<tr><td class=bodytext valign=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$currentline[14]'><br>$altext29</td></tr>"; } if ($allowsiteimages == 1) { print "<tr><td class=bodytext align=right>$altext30:</td><td><input type=text size=30 class=formtext value='$currentline[16]' name=image></td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext8:</td><td><input type=text size=30 class=formtext value='$currentline[4]' name=email></td></tr> <tr><td class=bodytext align=right>$altext9:</td><td><input type=text size=30 class=formtext value='$currentline[5]' name=name></td></tr> <tr><td class=bodytext align=right>$altext10:</td><td><input type=text size=30 class=formtext value='$currentline[6]' name='password'></td></tr> <tr><td colspan=2 align=center><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=linkid value=$currentline[0]> <input type=hidden name=enddate value='$currentline[12]'> <input type=hidden name=udate value='$currentline[13]'> <input type=hidden name=addedon value=\"$currentline[8]\"> <input type=hidden name=action value=modifylink> </form></table> <br> <table><form action=$processscript method=post> <tr><td class=catheadertext align=left colspan=2>$altext17:</td></tr> <tr><td align=right><input type=checkbox name=delete value=yes class=formtext></td><td class=bodytext>$altext18</td></tr> <tr><td align=center colspan=2><input type=submit value='$altext19' class=button></td></tr> <input type=hidden name=subaction value=Delete> <input type=hidden name=linkid value=$currentline[0]> <input type=hidden name=action value=deletelink> </form></table> HTML &footer; } ################################################## sub checkforduplicate { ################################################## my $f_url = $q->param("url"); my $f_category = $q->param("category"); my $f_sitename = $q->param("sitename"); my $f_email = $q->param("email"); my $f_name = $q->param("name"); my $f_password = $q->param("password"); my $f_description = $q->param("description"); my $f_keywords = $q->param("keywords"); my $f_recipurl = $q->param("recipurl"); my $f_enddate = $q->param("enddate"); my $f_image = $q->param("image"); if ($duprestriction == 1) { my $sth = $dbh->prepare("SELECT id FROM links WHERE url = '$f_url' AND category = '$f_category'") || print "could not access database"; $sth->execute(); if ($sth->rows) {&duplicate} } elsif ($duprestriction == 2) { my $sth = $dbh->prepare("SELECT id FROM links WHERE url = '$f_url'") || print "could not access database"; $sth->execute(); if ($sth->rows) {&duplicate} } if ((!$f_url) || (!$f_sitename) || (!$f_email) || (!$f_name) || (!$f_password) || (!$f_description)) {$incomplete = 1;} if ($incomplete == 1) {&incomplete} else { &header; print <<"HTML"; <table width=$tablewidth> <form action=$processscript method=post> <tr><td class=catheadertext align=left colspan=2><img src='$ofolder'> <a href=$indexscript>$shtext1</a> : $altext1</td></tr> <tr><td class=bodytext align=left colspan=2><dd><b>$altext20</b></dd></td></tr> <tr><td class=bodytext align=right>$altext2</td><td><Select name=category class=formtext> HTML &dropdownlist; print <<"HTML"; </select></td></tr> <br> <tr><td class=bodytext align=right>$altext5:</td><td><input type=text size=30 class=formtext value='$f_sitename' name=sitename></td></tr> <tr><td class=bodytext align=right>$altext6:</td><td><input type=text size=30 class=formtext value='$f_url' name=url></td></tr> <tr><td class=bodytext align=right>$altext7:</td><td><textarea name=description cols=40 rows=5 class=formtext>$f_description</textarea></td></tr> <tr><td class=bodytext align=right>$altext26:</td><td><input type=text size=35 class=formtext value='$f_keywords' name=keywords></td></tr> HTML if ($requirerecip == 2) { print "<tr><td class=bodytext valgin=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$f_recipurl'><br>$altext28</td></tr>"; } elsif ($requirerecip == 1) { print "<tr><td class=bodytext valign=top align=right>$altext27:</td><td class=bodytext><input type=text size=35 class=formtext name=recipurl value='$f_recipurl'><br>$altext29</td></tr>"; } if ($allowsiteimages == 1) { print "<tr><td class=bodytext align=right>$altext30:</td><td><input type=text size=30 class=formtext value='$f_image' name=image></td></tr>"; } if ($allowexpire == 1) { print "<tr><td class=bodytext align=right>End Date:</td><td class=bodytext>$altext31 <input type=text size=5 class=formtext name=enddate value='$f_enddate'> $altext32</td></tr>"; } print <<"HTML"; <tr><td class=bodytext align=right>$altext8:</td><td><input type=text size=30 class=formtext value='$f_email' name=email></td></tr> <tr><td class=bodytext align=right>$altext9:</td><td><input type=text size=30 class=formtext value='$f_name' name=name></td></tr> <tr><td colspan=2 align=center><input type=submit value='$altext11' class=button></td></tr> <input type=hidden name=password value='$f_password'></form> </table> HTML &footer; } } ################################################## sub duplicate { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext21</td></tr> <tr><td class=bodytext>$altext22</td></tr> </table> HTML &footer; $sth->finish; exit; } ################################################## sub dropdownlist { ################################################## my $sth = $dbh->prepare("SELECT * FROM categories") || print "could not access database"; $sth->execute(); while (my $results = $sth->fetchrow_hashref) { my $id = $results->{id}; my $title = $results->{title}; my $description = $results->{description}; my $type = $results->{type}; my $subfor = $results=>{subfor}; push(@cats, "$id|$title|$description|$type|$subfor"); } $sth->finish; opendir (DIR, "$catinfopath"); @catbuild = grep (!/^\.\.?$/, readdir (DIR)); closedir(DIR); foreach $line (@catbuild) { chomp($line); if ($line =~ /main/) { $category = $line; $category =~ s/\.main//; foreach $x (@cats) { chomp($x); my @catinfo = split(/\|/, $x); if ($catinfo[0] == $category) {$categorybuild{$category} = "$catinfo[1]"} } open (FILE, "$catinfopath/$category.main"); my @subs = <FILE>; close(FILE); foreach $sub (@subs) { chomp($sub); my @subinfo = split(/\|/, $sub); $categorybuild{$subinfo[0]} = "$categorybuild{$category}/$subinfo[1]"; &buildsubs("$subinfo[0]", "$categorybuild{$subinfo[0]}"); } } } sub buildsubs { foreach $y (@catbuild) { chomp($y); if ($y eq "$_[0].sub") { open (FILE, "$catinfopath/$y"); my @moresubs = <FILE>; close(FILE); foreach $sub (@moresubs) { chomp($sub); my @subinfo = split(/\|/, $sub); $categorybuild{$subinfo[0]} = "$_[1]/$subinfo[1]"; &buildsubs("$subinfo[0]", "$categorybuild{$subinfo[0]}"); } } } } # Build the Drop down menu foreach $key (keys %categorybuild) { push(@getvalues, "$categorybuild{$key}|$key"); } foreach $value (sort values %categorybuild) { foreach $line (@getvalues) { chomp($line); my @comparevalue = split(/\|/, $line); if ($comparevalue[0] eq $value) { if ($currentline[1] == $comparevalue[1]) { print "<option value=$comparevalue[1] class=formtext selected>$value\n"; } elsif ($f_category == $comparevalue[1]) { print "<option value=$comparevalue[1] class=formtext selected>$value\n"; } else { print "<option value=$comparevalue[1] class=formtext>$value\n"; } } } } } ################################################## sub incomplete { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext21</td></tr> <tr><td class=bodytext>$altext23</td></tr> </table> HTML &footer; } ################################################## sub error { ################################################## &header; print <<"HTML"; <br> <table width=$tablewidth><tr><td class=catheadertext>$altext24</td></tr> <tr><td class=bodytext>$altext25</td></tr> </table> HTML &footer; } $dbh->disconnect;