#!/usr/bin/perl
# (C)2011 Daniel Eschbach
require "config.cgi" ;
my $list="" ;
my $alist="" ;
my $smail="" ;
my $tiefe=0 ;
my $idlist="" ;
my $katlist="" ;
my $anzahl=0 ;
my $handel=0 ;
my $gesamtbetrag=0 ;
my $portokosten=0 ;
my $aportokosten=0 ;
$handel="1" if(length($CO{handel_id})==7) ;
$ptmpl=qq~
[titel] € [preis] statt € [ovk_preis]
~ ;
###################################
# Partner ID setzen wenn angegeben
if($FM{pid}>100000) {
my $s="" ;
foreach(keys(%FM)) {
$s.="$_=$FM{$_}&" unless($_ eq "pid") ;
}
setCookie("pid",$FM{pid}) ;
umleiten("$_scriptname?$s") ;
exit(0) ;
}
if($FM{aw}) {
$dbh->do("INSERT INTO google (keyw,datum,ip,placement,quelle) VALUES ('$FM{aw}',NOW(),'$ENV{REMOTE_ADDR}','$FM{plc}','$FM{typ}')");
setCookie("google",$FM{aw}) ;
# umleiten("$_scriptname") ;
# exit(0) ;
}
START:
if ($FM{a} eq "show") {
show:
&setCookie("kat",undef);
# mitloggen
$dbh->do("INSERT INTO artikel_show (artikel_id,datum,ip) VALUES ('$FM{id}',NOW(),'$ENV{REMOTE_ADDR}')") ;
$dbh->do("UPDATE artikel SET angesehen=angesehen+1 WHERE id='$FM{id}'") ;
$tmpl = &loadtmpl2("shop/artikel.html") ;
my $size="" ;
$force="AND (a.status = 'online' OR a.status='nichtkaufbar')" unless($FM{force} > 0) ;
$dc=$dbh->prepare("SELECT
a.status,
a.angebot,
a.verkaufseinheit,
a.pdf,
at.schlagworte,
a.newsletter,
a.id,
at.var_name,
at.var_name2,
a.crosslink,
at.var_name3,
at.titel,
at.subtitel,
at.kurztext,
at.zustand,
at.technik,
a.bild_id,
a.tag,
(SELECT kt.titel FROM kategorie_text kt, artikel_kat ak WHERE ak.artikel_id=a.id AND kt.kategorie_id=ak.kategorie_id LIMIT 1) AS katname,
at.beschreibung,
b.xsize,
b.ysize,
b.file,
b.beschreibung AS descr
FROM artikel a
INNER JOIN bilder b ON b.id=a.bild_id
INNER JOIN artikel_text at ON at.artikel_id=a.id
WHERE at.sprache='$CO{sprache}' AND
a.id='$FM{id}' $force
") or die $DBI::errstr ;
$dc->execute() ;
$set=$dc->fetchrow_hashref() ;
unless($set->{id}) {
¨eiten('/') ;
exit();
}
$set->{titel}=~s/\"/\"/g ;
$set->{schlagworte}=~s/\,/ /g ;
$tmpl=~s/\[schlagworte\] //i unless($set->{schlagworte}) ;
$set->{desc}=$set->{beschreibung} ;
$set->{desc}=~s/<.*>//g ;
$set->{desc}=~s/\n/ /g ;
$set->{by}=$set->{ysize} ;
$set->{desc}=substr($set->{desc},0,255) ;
## Variationen
$set->{list}=qq~
{artikelnummer}
~ ;
my $v=0 ;
my @order=('','2','3','4') ;
for($v=0;$set->{'var_name'.$order[$v]};$v++) {
$set->{list}.=qq~
~ if ($set->{var_name3}) ;
### Preis
my ($pl)=&fetchdb("SELECT k.preisliste FROM kunden k ON k.id='$_kunden_id'") ;
if($pl>0) {
$data2=$dbh->prepare("SELECT p.preis, p.ab FROM preise p WHERE p.preislisten_id='$pl' AND artikel_var_id='$setv->{id}' ORDER BY p.ab") or die $DBI::errstr ;
$data2->execute() ;
while(my $spl=$data2->fetchrow_hashref()) {
$set->{list}.=qq~
{ab} $spl->{ab} {St}: $spl->{preis} €
~ ;
$set->{list}=~s/ab 0? St\.: //;
}
goto DEFPREIS if($data2->rows()==0); # Wenn keine Preise hinterlegt, zeige Std Preise
$data2->finish() ;
} else {
DEFPREIS:
my $fp="";
$fp="$setv->{fakepreis}" if($setv->{fakepreis}-$setv->{preis}>0);
$set->{list}.=qq~
";
### verwandte Artikel
# $list="";
# if ($set->{crosslink}) {
# my @cl=split(/\,/,$set->{crosslink}) ;
# my $nr=0 ;
# foreach(@cl) {
# next if($nr>=3) ;
# my $d=$dbh->prepare("SELECT
# a.id,
# a.bild_id,
# a.tag,
# t.titel,
# b.file,
# (SELECT kt.titel FROM kategorie_text kt, artikel_kat ak WHERE ak.artikel_id=a.id AND kt.kategorie_id=ak.kategorie_id LIMIT 1) AS katname
# FROM artikel_var v
# LEFT JOIN artikel a ON a.id=v.artikel_id
# LEFT JOIN artikel_text t ON t.artikel_id=a.id
# LEFT JOIN bilder b ON b.id=a.bild_id
# WHERE a.status='online' AND
# a.newsletter='0' AND
# v.bestellnummer='$_' LIMIT 1") ;
# $d->execute ;
# my($i,$bi,$tag,$t,$be,$kat)=$d->fetchrow() ;
# $bi=~s/\,.*// ;
# $list.=qq~
~ ;
# $d->finish() ;
# $nr++;
# }
# } else {
#
# ### falls nichts hinterlegt nehme Produkte der gleichen Kategorie
# ($kat)=&fetchdb("SELECT kategorie_id FROM artikel_kat WHERE artikel_id='$FM{id}'");
# my $d=$dbh->prepare("SELECT
# k.artikel_id,
# a.bild_id,
# t.titel,
# a.tag,
# b.file,
# (SELECT kt.titel FROM kategorie_text kt, artikel_kat ak WHERE ak.artikel_id=a.id AND kt.kategorie_id=ak.kategorie_id LIMIT 1) AS katname
# FROM artikel_kat k
# LEFT JOIN artikel a ON a.id=k.artikel_id
# LEFT JOIN artikel_text t ON t.artikel_id=a.id
# LEFT JOIN bilder b ON b.id=a.bild_id
# WHERE a.status='online' AND
# a.newsletter='0' AND
# k.kategorie_id='$kat' AND a.id!='$FM{id}' LIMIT 3") ;
# $d->execute ;
# while(my($i,$bi,$t,$tag,$be,$kat)=$d->fetchrow()) {
# $bi=~s/\,.*// ;
# $list.=qq~
~ ;
# }
# $d->finish() ;
# $tmpl=~s/.*//si unless($list);
# }
# $set->{verwandt}=$list ;
# $list="";
#
# ### letzte Artikel
# my @cl=split(/\,/,$_history) ;
# my $nr=0 ;
# foreach my $id (@cl) {
# next if($id==$i) ;
# next if($nr>=3) ;
# my $d=$dbh->prepare("SELECT
# a.id,
# a.bild_id,
# a.tag,
# t.titel,
# b.file,
# (SELECT kt.titel FROM kategorie_text kt, artikel_kat ak WHERE ak.artikel_id=a.id AND kt.kategorie_id=ak.kategorie_id LIMIT 1) AS katname
# FROM artikel_var v
# LEFT JOIN artikel a ON a.id=v.artikel_id
# LEFT JOIN artikel_text t ON t.artikel_id=a.id
# LEFT JOIN bilder b ON b.id=a.bild_id
# WHERE a.status='online' AND
# a.newsletter='0' AND
# a.id='$id' LIMIT 1") ;
# $d->execute ;
# ($i,$bi,$tag,$t,$be,$kat)=$d->fetchrow() ;
# $bi=~s/\,.*// ;
# $list.=qq~
\n~ ;
my ($preis,$vid,$aid)=&getprice($avi,$anz,$_kunden_id);
($preis,$vid,$aid)=&fetchdb("SELECT preis,id,artikel_id FROM artikel_var WHERE id='$avi' ORDER BY preis DESC LIMIT 1");
#if($status eq 'nichtkaufbar') {
# $pt=qq~
\n~ ;
my ($preis,$vid,$aid)=&getprice($avi,$anz,$_kunden_id);
($preis,$vid,$aid)=&fetchdb("SELECT preis,id,artikel_id FROM artikel_var WHERE id='$avi' ORDER BY preis DESC LIMIT 1");
if(($fp-$preis)>0) {
$dif=$fp-$preis;
$pt=qq~
€ $preis
anstatt € $fp / Sie sparen € ~.sprintf("%.02f",$dif).qq~
~;
} else {
$pt=qq~
€ $preis
~;
}
$pt=~s/\.00/,-/g;
$pt=~s/\./,/g;
$tm =~ s//$pt/ig ;
}
$d->finish() ;
my $nr=$d->rows() ;
$d->finish;
$tmpl =~ s/\[nr\]/$nr/g ;
#(my $n,$FM{kid})=&fetchdb("SELECT titel,parent_id FROM kategorie WHERE id='$FM{kid}'") ;
#$tmpl =~ s/\[name\]/$n/ig ;
if(-e $imgdir."../kat/$FM{id}.jpg") {
$tm.="";
}
$tmpl =~ s/\[list\]/$tm/ig ;
&print_tmpl($tmpl) ;
} elsif ($FM{a} eq "suche2") {
$tmpl = &loadtmpl2("shop/list.html") ;
my $sbeg=&mach_laut("$FM{sbeg}") ;
my $d=$dbh->prepare("SELECT id,bild_id,titel,beschreibung FROM artikel WHERE status='online' AND newsletter=0 AND lautsuche LIKE '%".$sbeg."%' ORDER BY score DESC,titel") ;
$d->execute ;
my $nr=$d->rows() ;
if ($d->rows()==0) {
my $tmpl=&loadfile("../../suche.html") ;
$tmpl=~s/\[sbeg\]/$FM{sbeg}/ig ;
$tmpl =~ s/.*/Auch die ähnlichkeitssuche war nicht erfolgreich :(/ig ;
&print_tmpl($tmpl) ;
exit ;
}
$tmpl =~ s/Artikel in dieser Kategorie/Treffer gefunden/i ;
my $tm="" ;
while(my($i,$bi,$t,$b)=$d->fetchrow()) {
$b=~s/<.*>/ /ig ;
$b=substr($b,0,200)."..." if (length($b)>200) ;
$tm.=qq~
~;
$z=~s/\[c\]/Anmerkung von Flux Hifi: /ig ;
$z=~s/\[\/c\]/<\/span>/ig ;
}
$data->finish();
$tmpl=~s/\[list\]/$z/ig ;
$tmpl=~s/\[index\]/$index/ig ;
&print_tmpl($tmpl) ;
} elsif ($FM{a} eq "codechk") {
$co=uc(substr($FM{c},0,9));
($c)=&fetchdb("SELECT id FROM gutscheine WHERE SUBSTR(id,1,9) LIKE '$co' AND (TO_DAYS(valid_until)>=TO_DAYS(CURDATE()) OR valid_until='0000-00-00') AND (used IS NULL OR undel='1') LIMIT 1") ;
if(length($c)>=1) {
$tmpl=qq~
$co Code ist gültig
~ ;
} else {
$tmpl=qq~
$co Code ist leider ungültig
~ ;
}
&print_tmpl($tmpl) ;
} elsif ($FM{a} eq "pwlost_send") {
$tmpl = &loadtmpl2("shop/pwlost.html") ;
my ($em,$ki,$pw,$nn,$ti)=&fetchdb("SELECT email,id,passwort,nachname,anrede FROM kunden WHERE email LIKE '$FM{email}'") ;
if ($em) {
my $txt=qq~
/ig if($FM{a} eq "save") ;
#$tmpl =~s/\[.*]//ig ;
$tmpl =~s/\%menu\%/\[menu\]/ig ;
&print_tmpl($tmpl,1) ;
} else {
¨eiten("$_scriptname?a=login&aa=profil") ;
}
} elsif ($FM{a} eq "haendler") {
Haendler:
$tmpl=&loadtmpl2("shop/haendler.html") ;
my $list='';
my $d=$dbh->prepare("SELECT SUBSTRING(plz,1,1) FROM haendler GROUP BY 1 ORDER BY 1") or die $DBI::errstr ;
$d->execute ;
while(my ($p) = $d->fetchrow) {
$list.=qq~\n~;
}
$tmpl=~s/\[olist\]/$list<\/table>/ig;
$d->finish;
my $where="WHERE plz LIKE '$FM{plz}%'" if($FM{plz});
my $d=$dbh->prepare("
SELECT
*
FROM
haendler
$where
ORDER BY plz") or die $DBI::errstr ;
$d->execute ;
my $list="
~ ;
$data=$dbh->prepare("SELECT bestellungen.datum AS dat,bestellungen.id AS bid,bestellungen.datum,DATE_FORMAT(versandt,'%d.%m.%Y, %k:%ih') AS vdatum,DATE_FORMAT(datum,'%d.%m.%Y, %k:%ih') AS datum,DATE_FORMAT(datum,'%d.%m.%Y') AS datum2, DATE_FORMAT(bezahlt,'%d.%m.%Y, %k:%ih') AS bdatum FROM bestellungen,kunden WHERE bestellungen.kunden_id=kunden.id AND kunden.id='$_kunden_id' AND deleted IS NULL ORDER BY dat DESC LIMIT 5") or die $DBI::errstr ;
$data->execute() ;
my $list="" ;
while(my $set=$data->fetchrow_hashref()) {
$list.=$list1 ;
$list=~s/\[datum\]/$set->{bid}-B/ig ;
$list.="" ;
$list.=qq~
$set->{datum} {os_order}
~ ;
if ($set->{bdatum}) {
$list.=qq~
$set->{bdatum} {os_pay}
~ ;
} else {
$list.=qq~
{not_payed}
~ ;
}
if ($set->{vdatum}) {
$list.=qq~
$set->{vdatum} {os_sent}
~ ;
}
$list.="
" ;
}
$list="
{no_order}
" unless($data->rows()>0) ;
$data->finish() ;
$tmpl =~s/\[list\]/$list/ig ;
&print_tmpl($tmpl) ;
} else {
¨eiten("$_scriptname?a=klogin&aa=status") ;
}
} elsif ($FM{a} eq "logout") {
$dbh->do("UPDATE sid SET kunden_id='0' WHERE sid='$_session_id'") ;
&setCookie('sid','');
¨eiten("/index.html") ;
} elsif ($FM{a} eq "dela") { ## Einen Artikel aus dem Warenkorb löschen...
$_warenkorb =~ s/$FM{bid}x\d*o?//i ;
$dbh->do("UPDATE sid SET warenkorb='$_warenkorb' WHERE sid='$_session_id'") ;
¨eiten("$_scriptname?a=showkorb") ;
} elsif ($FM{a} eq "showkorb" || $FM{a} eq "wkorb") {
SHOWKORB:
$tmpl = &loadtmpl2("shop/warenkorb.html") ;
my $list=qq~
{anzahl}
{artikelnummer}
{artikel}
{preis}
{summe}
~ ;
my $nr=0 ;
my $gp=0 ;
my @wk=split(/o/,$_warenkorb) ;
foreach(@wk) {
$_ =~ m/(\d*)x(\d*)/i ;
my $id=$1 ;
my $anz=$2 ;
my ($bnr,$titel,$vn,$vn2,$vn3,$v,$v2,$v3,$bi,$end)=&fetchdb("
SELECT v.bestellnummer,
at.titel,
at.var_name,
at.var_name2,
at.var_name3,
avt.var,
avt.var2,
avt.var3,
a.bild_id,
b.file
FROM artikel_var v
LEFT JOIN artikel_text at ON at.artikel_id=v.artikel_id
LEFT JOIN artikel_var_text avt ON avt.artikel_var_id=v.id
LEFT JOIN artikel a ON a.id=v.artikel_id
LEFT JOIN bilder b ON b.id=a.bild_id
WHERE v.id='$id' AND
at.sprache='$CO{sprache}' AND
avt.sprache='$CO{sprache}'
LIMIT 1
") ;
my ($bi2,$end2)=&fetchdb("
SELECT v.bild_id,
b.file
FROM artikel_var v
LEFT JOIN bilder b ON b.id=v.bild_id
WHERE v.id='$id'
LIMIT 1
") ;
$bi=~s/\,.*// ;
$bi2=~s/\,.*// ;
if($bi2) {
$bi=$bi2 ;
$end=$end2;
}
my ($preis,$vid,$aid)=&getprice($id,$anz,$_kunden_id);
my $bez="" ;
$bez="$vn: $v" if($vn) ;
$bez.=", $vn2: $v2" if($vn2) ;
$bez.=", $vn3: $v3" if($vn3) ;
$list.=qq~