#!/usr/bin/perl require "vars.cgi"; ########################################################################## ## ## ## SmartFAQ v2.0 ## ## ------------- ## ## by Jimmy (wordx@hotmail.com) ## ## http://www.smartCGIs.com ## ## ## ## This is a free script, if anyone sold it to you please contact me. ## ## Please DO NOT remove any of the copyrights or links to our site, ## ## they keep this CGI free for everyone. Thanks! ## ## ## ## (c) copyright 2000 SmartCGIs.com ## ########################################################################## print "Content-type: text/html\n\n"; $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name,$value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/~!/ ~!/g; $in{$name} = $value; } $answer = $in{'answer'}; $id = $in{'id'}; $subject = $in{'subject'}; $keywords = $in{'keywords'}; $match = $in{'match'}; open(DATA,"header.html"); @head = ; close(DATA); open(DATA,"footer.html"); @foot = ; close(DATA); if($answer ne "") { &answer; } if($subject ne "") { &subject; } if($keywords ne "") { &search; } open(DATA,"subject.faq"); @subj = ; close(DATA); print "@head\n"; foreach (@subj) { chomp($_); ($id, $subject) = split(/\|/,$_); print "\n"; print "
    \n"; opendir (DIR, "subject/$id"); @files = grep { /.qa/ } readdir(DIR); close (DIR); foreach $file(@files) { $fid = $file; $fid =~ s/.qa//g; open(DATA,"subject/$id/$file"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); print "
  • $q
  • \n"; } print "

\n"; } print <

Script provided by SmartCGIs.com
EOF sub answer { open(DATA,"subject/$id/$answer.qa"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); print < $q

$a

@foot


Script provided by SmartCGIs.com
EOF exit; } sub subject { open(DATA,"subject.faq"); @subj = ; close(DATA); foreach (@subj) { chomp($_); ($num, $sub) = split(/\|/,$_); if($num eq $subject) { last; } } print < $sub

EOF opendir (DIR, "subject/$subject"); @files = grep { /.qa/ } readdir(DIR); close (DIR); # Layout number 1 if($layout eq 1) { foreach $file(@files) { $fid = $file; $fid =~ s/.qa//g; open(DATA,"subject/$subject/$file"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); print "

  • $q\n"; } print "


    \n"; foreach $file(@files) { $fid = $file; $fid =~ s/.qa//g; open(DATA,"subject/$subject/$file"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); print " $q
    $a

    \n"; } } # Layout number 2 if($layout eq 2) { foreach $file(@files) { $fid = $file; $fid =~ s/.qa//g; open(DATA,"subject/$subject/$file"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); print "$q
    $a

    \n"; } } # Layout number 3 if($layout eq 3) { foreach $file(@files) { $fid = $file; $fid =~ s/.qa//g; open(DATA,"subject/$subject/$file"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); print "

  • $q\n"; } } print <
    Script provided by SmartCGIs.com
    EOF exit; } sub search { open(DATA,"subject.faq"); @subj = ; close(DATA); @key = split(/ /,$keywords); print <Search results for $keywords:

    EOF foreach (@subj) { chomp($_); ($id, $subject) = split(/\|/,$_); opendir (DIR, "subject/$id"); @files = grep { /.qa/ } readdir(DIR); close (DIR); foreach $file(@files) { $fid = $file; $fid =~ s/.qa//g; open(DATA,"subject/$id/$file"); @content = ; close(DATA); $content = join('',@content); ($q, $a) = split(/\|/,$content); if($match eq "all") { if((($q =~ /$key[0]/i)&& ($q =~ /$key[1]/i)&& ($q =~ /$key[2]/i)&& ($q =~ /$key[3]/i)&& ($q =~ /$key[4]/i)&& ($q =~ /$key[5]/i)&& ($q =~ /$key[6]/i)&& ($q =~ /$key[7]/i)&& ($q =~ /$key[8]/i)&& ($q =~ /$key[9]/i))|| (($a =~ /$key[0]/i)&& ($a =~ /$key[1]/i)&& ($a =~ /$key[2]/i)&& ($a =~ /$key[3]/i)&& ($a =~ /$key[4]/i)&& ($a =~ /$key[5]/i)&& ($a =~ /$key[6]/i)&& ($a =~ /$key[7]/i)&& ($a =~ /$key[8]/i)&& ($a =~ /$key[9]/i))) { foreach $ky(@key) { $q =~ s/$ky/$ky<\/b>/ig; } print "

  • $subject - $q
  • \n"; $found = 1; } } else { if(($q =~ /$key[0]/i)|| ($q =~ /$key[1]/i)|| ($q =~ /$key[2]/i)|| ($q =~ /$key[3]/i)|| ($q =~ /$key[4]/i)|| ($q =~ /$key[5]/i)|| ($q =~ /$key[6]/i)|| ($q =~ /$key[7]/i)|| ($q =~ /$key[8]/i)|| ($q =~ /$key[9]/i)|| ($a =~ /$key[0]/i)|| ($a =~ /$key[1]/i)|| ($a =~ /$key[2]/i)|| ($a =~ /$key[3]/i)|| ($a =~ /$key[4]/i)|| ($a =~ /$key[5]/i)|| ($a =~ /$key[6]/i)|| ($a =~ /$key[7]/i)|| ($a =~ /$key[8]/i)|| ($a =~ /$key[9]/i)) { foreach $ky(@key) { $q =~ s/$ky/$ky<\/b>/ig; } print "
  • $subject - $q
  • \n"; $found = 1; } } } } if($found ne 1) { print "No results found.

    "; } print "@foot\n"; exit; }