#!/usr/bin/perl # Arthur Maas juni 2009 # CV Onderdelen #require "/home/vhosting/p/vhost0008035/domains/snelbesteld.nl/htdocs/www/cgi-bin/shop/config.cgi"; print "Content-type: text/html\n\n"; # Merken $merk[800] = "div"; $merk[801] = "Remeha"; $merk[802] = "Junkers"; $merk[803] = "Nefit-Fasto"; $merk[804] = "Nefit-Fasto"; $merk[806] = "Intergas"; $merk[807] = "AWB"; $merk[808] = "Baxi"; $merk[809] = "Sime"; $merk[810] = "Agpo Ferroli"; $merk[811] = "Agpo Ferroli"; $merk[812] = "Radson"; $merk[813] = "ATAG"; $merk[814] = "Faber"; $merk[816] = "div"; $merk[817] = "Itho"; $merk[818] = "Junkers / Bosch"; $merk[819] = "Buderus"; $merk[820] = "Honeywell"; $merk[821] = "Siemens- Landis en Gyr"; $merk[822] = "Agpo"; $merk[823] = "div"; $merk[824] = "div"; $merk[825] = "Dungs"; $merk[826] = "div"; $merk[827] = "Johnson Controls"; $merk[828] = "Cenvax"; $merk[829] = "div"; $merk[830] = "Grundfoss"; $merk[832] = "div"; $merk[833] = "div"; $merk[836] = "div"; $merk[838] = "div"; $merk[839] = "div"; $merk[840] = "Wilo"; $merk[844] = "div"; $merk[845] = "Vaillant"; $merk[846] = "Vaillant"; $merk[847] = "Vaillant"; $merk[848] = "Vaillant"; $merk[853] = "Dru onderdelen"; $merk[854] = "div"; $merk[856] = "Stork onderdelen"; $merk[857] = "Brink onderdelen"; $merk[858] = "div"; $merk[861] = "div"; $merk[867] = "div"; $merk[870] = "Acv"; $merk[874] = "Benraad"; $merk[875] = "A.O.Smith"; $merk[877] = "div"; $merk[878] = "div"; $merk[880] = "div"; $merk[886] = "div"; $merk[887] = "div"; $merk[890] = "Biral"; $merk[892] = "Biral"; # base_dir $base_dir = "/srv/home/onderdelen-zoekencom/domains/onderdelen-zoeken.com/htdocs/www"; # catalogus $cat_file= "/srv/home/onderdelen-zoekencom/domains/onderdelen-zoeken.com/htdocs/www/catalogus_nl.csv"; # merken file $merken_file = "/srv/home/onderdelen-zoekencom/domains/onderdelen-zoeken.com/htdocs/www/merken.csv"; # zoekresultaten per pagina, minus 1 $maxr = 19; # Email webmaster $webmaster = "webmaster\@onderdelen-zoeken.com"; # Laatste succesvolle zoekopdrachten $log = "/srv/home/onderdelen-zoekencom/domains/onderdelen-zoeken.com/htdocs/www/log.txt"; # Aantallen links op index pagina's $strt = 0; $eind = 20; # Begin &parse_form; &read_catalogus; #&read_merken; &search; &m_html_result; exit; ###################################################################### ###################################################################### sub m_html_result { # Niets gevonden unless ($i > 0) { &error("Er zijn geen resultaten gevonden, probeer een andere zoekopdracht."); } &wr_log; if ($FORM{'n'} ne "") { $b = "$FORM{'n'}"; } if ($i > $maxr) { $j = $maxr + $b; if ($j > $i) { $j = $i; $nxt = "no"} $i = $j; $n = $j + 1; if ($nxt ne "no") { $nlink = "onderdelen.cgi?s=$FORM{'s'}&n=$n"; } } # bestanden schrijven for ($t=$b;$t<$i;$t++) { $s = $gev[$t]; ($Artikelnr,$Prijs,$Leeg,$Groep,$Omschrijving,$Art1,$Art2,$Artgroep)=split (/;/,$CATLINES[$s]); $newurl = "$Omschrijving $merk[$Artgroep]"; $newurl=~tr/./ /; $newurl=~tr/\//_/; $newurl=~tr/\-/ /; $newurl=~s/"//ge; $newurl=~s/ / /g; $newurl=~s/ / /g; $newurl=~s/ / /g; $newurl=~s/ / /g; $newurl=~s/ / /g; $newurl=~s/ / /g; #$newurl=~s/ /-/; $newurl=~tr/\-\-/\-/; $newurl=~tr/ /-/; $newurl .= ".shtml"; $newurl = "\L$newurl"; $letter = substr($newurl,0,1); $letter = "\L$letter"; unless(-d "$base_dir/$letter"){ mkdir "$base_dir/$letter"; } unless (-e "$base_dir/$letter/$newurl") { &wr_file("$letter","$newurl"); $newfiles = "yes"; } } if ($newfiles eq "yes") { &wr_index; } &header("$FORM{'s'}"); for ($t=$b;$t<$i;$t++) { $s = $gev[$t]; ($Artikelnr,$Prijs,$Leeg,$Groep,$Omschrijving,$Art1,$Art2,$Artgroep)=split (/;/,$CATLINES[$s]); $Prijs =~s/\,/./g; $Prijs = sprintf("%.2f", $Prijs); print "
$Omschrijving
\n"; print "Fabrikant: $merk[$Artgroep]
\n"; print "Artikelnummer fabrikant: $Art1
\n"; print "Prijs: € $Prijs

\n"; } if ($nlink ne "") { print "Volgende resultaten
"; } &footer; } ###################################################################### sub wr_log { open (LOGFILE,"$log") || die "Can't Open $log: $!\n"; # flock ??<<<<<<<<<<<<<<<<<<<<<<<<<<<< @LOGLINES=; close(LOGFILE); $LOGSIZE=@LOGLINES; $LOGSIZE2 = $LOGSIZE-1; if ($FORM{'n'} eq "") { open (LOGFILE,">$log"); print LOGFILE "$FORM{'s'}\n"; for ($t=0;$t<4;$t++) { print LOGFILE "$LOGLINES[$t]"; } close (LOGFILE); } } ###################################################################### sub wr_file{ &read_headers("$Omschrijving $merk[$Artgroep] $Art1"); open (NEWFILE,">$base_dir/$_[0]/$_[1]"); print NEWFILE "$headerline\n"; print NEWFILE "$Omschrijving
\n"; print NEWFILE "Fabrikant: $merk[$Artgroep]
\n"; print NEWFILE "Artikelnummer fabrikant: $Art1
\n"; print NEWFILE "Prijs: € $Prijs

\n"; print NEWFILE "$footerline\n"; close (NEWFILE); } ###################################################################### sub wr_index { &read_headers; $ok = "ok"; $filenr2 = 1; opendir (LDR,"$base_dir/$letter"); @lfiles = readdir(LDR); closedir (LDR); foreach $lline (sort @lfiles) { $llinesnr[$z]=$lline; $z+=1; } while ($ok eq "ok") { if ($filenr > 690) { print "Timeout $filenr"; exit; } for ($t=$strt;$t<$eind;$t++) { $newline = $llinesnr[$t]; $newline=~tr/\-/ /; $newline = "\u$newline"; chop $newline; chop $newline; chop $newline; chop $newline; chop $newline; chop $newline; unless ($newline =~ /index/i) { $prline .= "$newline
\n"; } } open (LFILE,">$base_dir/$letter/index$filenr.shtml"); print LFILE "$headerline\n"; print LFILE "$prline"; $vlgnd = $z - $eind; if ($vlgnd > 0) { print LFILE "
Volgende pagina"; } print LFILE "$footerline\n"; close (LFILE); $filenr+=1; $filenr2+=1; $strt = $strt + 20; $eind = $eind + 20; if ($eind > $z) { $eind = $z; } $prline = ""; if ($strt > $z) { $ok ="notok"; } next; } } ###################################################################### sub read_headers { $headerline = ""; $footerline = ""; $extratitel = ""; $header = "$base_dir/header.txt"; if (-e "$header") { open (FILE,"$header") || die "Can't Open $header: $!\n"; @LINES=; close(FILE); $SIZE=@LINES; foreach $LINE (@LINES) { if ($LINE =~ /title/i) { $headerline .= "\n"; $headerline .= "\n"; $headerline .= "\n"; if ($_[0] eq "") { $extratitel = "Verwarming, CV en ketels"; } $headerline .= "$extratitel$_[0] - Onderdelen zoeken\n"; } $headerline .= "$LINE"; } } $footer = "$base_dir/footer.txt"; if (-e "$footer") { open (FILE,"$footer") || die "Can't Open $footer: $!\n"; @LINES=; close(FILE); $SIZE=@LINES; foreach $LINE (@LINES) { $footerline .= "$LINE"; } } } ###################################################################### sub search { $search_length = length $FORM{'s'}; if ($search_length < 3) { &error("U moet minimaal 3 tekens invullen in het zoekveld. Probeer nogmaals:"); } # Resultaten zoeken for ($t=1;$t<=$CATSIZE;$t++) { $search = "$FORM{'s'}"; $CATLINES[$t] =~ s/\n//g; if ($FORM{'merk'} eq "") { $merk = $Categorie[$t]; } else { $merk = $FORM{'merk'}; } if (($CATLINES[$t] =~ /$search/i) && ($merk eq "$Categorie[$t]")) { $gev[$i] = $t; $i+=1; } } } ###################################################################### sub read_catalogus { open (CATFILE,"$cat_file") || print "Can't Open $cat_file: $!\n"; # flock ??<<<<<<<<<<<<<<<<<<<<<<<<<<<< @CATLINES=; close(CATFILE); $CATSIZE=@CATLINES; for ($t=1;$t<=$CATSIZE;$t++) { ($Artikelnr[$t],$Prijs[$t],$Hoofdcat[$t],$Categorie[$t],$Type[$t],$Omschrijving[$t],$Klantnr[$t])=split (/;/,$CATLINES[$t]); } } ###################################################################### sub read_merken { open (MERKFILE,"$merken_file") || die "Can't Open $merken_file: $!\n"; # flock ??<<<<<<<<<<<<<<<<<<<<<<<<<<<< @MERKLINES=; close(MERKFILE); $MERKSIZE=@MERKLINES; } ###################################################################### sub laatste_zoek { for ($t=0;$t<=$LOGSIZE;$t++) { chop $LOGLINES[$t]; print "$LOGLINES[$t]
\n"; } } ###################################################################### sub header { print< $_[0] - Onderdelen zoeken

Laatste zoekopdrachten:
EOF &laatste_zoek; print<
EOF } ###################################################################### sub footer { print<

www.onderdelen-zoeken.com

EOF } ###################################################################### ###################################################################### sub parse_form { if ($ENV{'QUERY_STRING'} ne "") { $temp = $ENV{'QUERY_STRING'}; } else { read(STDIN, $temp, $ENV{'CONTENT_LENGTH'}); } @pairs=split(/&/,$temp); foreach $item(@pairs) { ($name,$content)=split (/=/,$item,2); $content=~tr/+/ /; $content=~ s/%(..)/pack("c",hex($1))/ge; $FORM{$name}=$content; } # Leeg zoekveld if ($FORM{'s'} eq "") { &error("Er is op niets gezocht, probeer nogmaals"); } } ###################################################################### sub error { &header("$_[0]"); print "$_[0]

\n"; print "Als u denkt dat dit op een fout berust, neem dan contact op met $webmaster\n"; &footer; exit; } ######################################################################