#!/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~~ ; my $v=0 ; my @order=('','2','3','4') ; for($v=0;$set->{'var_name'.$order[$v]};$v++) { $set->{list}.=qq~~ ; } $set->{list}.=qq~~ ; $data=$dbh->prepare("SELECT av.id, at.var, at.var2, at.var3, av.fakepreis, av.preis, av.preis2, av.preis3, av.bestellnummer, a.pnr2, a.pnr3, a.tagespreis FROM artikel_var av INNER JOIN artikel a ON a.id='$set->{id}' INNER JOIN artikel_var_text at ON at.artikel_var_id=av.id WHERE av.artikel_id='$set->{id}' AND at.sprache='$CO{sprache}' and (a.status='online' or a.status='nichtkaufbar') ORDER BY av.id") or die $DBI::errstr ; $data->execute() ; $set->{beschreibung}=~ s/\{bild\:(\d*)\:?(\w*)?\}/{file}\"\ border=0 \/>/ig ; $set->{kurztext}=~ s/\{bild\:(\d*)\:?(\w*)?\}/{file}\"\ border=0 \/>/ig ; $set->{zustand}=~ s/\{bild\:(\d*)\:?(\w*)?\}/{file}\"\ border=0 \/>/ig ; $set->{beschreibung}=~ s/\{lexikon\:(\d*)?\}/» Mehr Infos hierzu finden Sie auch in unserem Lexikon<\/a>/ig ; #$set->{beschreibung}=~ s/(http\:\/\/[a-z0-9\~\/\.\?\&\-\_äüö]*)/$1<\/a>/i ; $set->{kurztext}=~ s/(http\:\/\/[a-z0-9\~\/\.\?\&\-\%\ \_äüö]*)/Test lesen<\/a>/ig ; #$set->{kurztext}=~ s/(.*\.pdf)/$1<\/a>/ig ; $set->{kurztext}="$set->{kurztext}"; $set->{bild_id}=~s/\s//g; my @bilder=split(/\,/,$set->{bild_id}); if($set->{bild_id}=~/\,/) { $set->{bild_id}=$bilder[0]; splice(@bilder,0,1); foreach(@bilder) { ($file,$desc)=&fetchdb("SELECT file,beschreibung FROM bilder WHERE id='$_'"); #$desc=~s/\/kunden\/webdesign-webentwicklung.de\/webseiten\/opera\/parser\/bilder\///; $set->{thumbs}.=qq~
~; } } while(my $setv=$data->fetchrow_hashref()) { if($set->{status} eq "nichtkaufbar") { $set->{list}.=qq~
~ ; } else { $set->{list}.=qq~~ ; } $set->{list}.=qq~~ if ($set->{var_name}) ; $set->{list}.=qq~~ if ($set->{var_name2}) ; $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~~ ; $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~~ ; if($setv->{pnr2}>0) { $set->{list}.=qq~~ ; } if($setv->{pnr3}>0) { $set->{list}.=qq~~ ; } } if($set->{status} eq "nichtkaufbar") { $set->{list}.=qq~~ ; } else { $set->{list}.=qq~~ ; } } $set->{list}.=qq~
{artikelnummer}$set->{'var_name'.$order[$v]}{preis} / $set->{verkaufseinheit} 
$setv->{bestellnummer}
$setv->{bestellnummer}$setv->{var}$setv->{var2}$setv->{var3}{ab} $spl->{ab} {St}: $spl->{preis} €$fp $setv->{preis} €{ab} $setv->{pnr2} {St}: $setv->{preis2} €{ab} $setv->{pnr3} {St}: $setv->{preis3} €in Kürze verfügbar
{iwl}
~ ; $set->{list}=~s/(\d)\.(\d{2}\D)/$1\,$2/g ; #$set->{list}=~s/\,00/\,-/g ; $data->finish() ; if($set->{status} eq "ausverkauft") { $set->{list}=qq~
Diesen Artikel haben wir
aus dem Programm genommen.
~ ; } if($set->{pdf}) { $set->{list}=qq~» Weitere Informationen als PDF zum Download

$set->{list}~ ; } $set->{beschreibung}=~s/\n/
/g ; $set->{kurztext}=~s/\n/
/g ; if($set->{beschreibung}=~ m/\{video\:([\w\.]*)\:(\d*)\:(\d*)/) { my ($url,$x,$y)=($1,$2,$3) ; $vt=$video_tmpl; $vt=~s/\[url\]/$url/ig; $vt=~s/\[x\]/$x/ig; $vt=~s/\[y\]/$y/ig; $set->{beschreibung}=~s/\{video\:.*\}/$vt/ ; } $tt="" ; foreach(split(/\n/,$set->{technik})) { ($t1,$t2)=split(/\:/,$_); $tt.=""; } $set->{technik}=$tt."
$t1 $t2
"; ### 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~
$t
$t
~ ; # $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~
$t
$t
~ ; # } # $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~
$t
$t
~ ; # $d->finish() ; # $nr++; # } # $set->{history}=$list ; # $_history=$FM{id}.",".$_history ; # $dbh->do("UPDATE sid SET history='$_history' WHERE sid='$_session_id'") ; $tmpl=~s/.*//si if($FM{id}==838) ; my ($neu)=&fetchdb("SELECT id FROM artikel WHERE id=$set->{id} AND (TO_DAYS(artikelneu)+60)>TO_DAYS(CURDATE())") ; $tmpl=~s/.*//si unless($neu>0) ; $tmpl=~s/.*//si unless($set->{tagespreis}>0) ; $tmpl=~s/.*//ig unless($set->{angebot} && length($set->{zustand})>5); # Falls Schnäppchen foreach(keys(%{$set})) { $tmpl =~ s/\[$_\]/$set->{$_}/ig ; } # if($set->{status} eq "nichtkaufbar") { # $tmpl=~s/.*//si ; # # } else { # $tmpl=~s/.*//si ; # } &print_tmpl($tmpl) ; } elsif ($FM{a} eq "test") { ($tmpl)=&sendsmtp('tyr@urbanbytes.de','tyr@urbanbytes.de','tyr@urbanbytes.de','Testmail','Test
Test') ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "lang") { ## Kategorie Startseite setCookie("sprache",$FM{l}) ; if($ENV{HTTP_REFERER}) { umleiten("$ENV{HTTP_REFERER}") ; } else { umleiten("/") ; } } elsif ($FM{a} eq "rate") { $tmpl = &loadtmpl2("shop/rate.html") ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "start") { ## Kategorie Startseite } elsif ($FM{a} eq "list") { ## SubKategorie List $tmpl = &loadtmpl2("shop/list.html") ; ($FM{titel})=&fetchdb("SELECT titel FROM kategorie_text WHERE kategorie_id='$FM{id}' AND sprache='$CO{sprache}'") unless($FM{titel}); $FM{titel}="Sonderangebote" if( $FM{a} eq "sonder"); $tmpl =~ s/\[titel\]/$FM{titel}/ig ; $tmpl =~ s/\[kid\]/$FM{kid}/ig ; $tmpl =~ s/\[sort\:$FM{sort}\]/selected/ig ; setCookie("kat",$FM{id}); $sortieren="a.score DESC" ; $sortieren="apreis" if($FM{sort} eq "preis") ; $sortieren="a.titel" if($FM{sort} eq "titel") ; my $bedingung="("; foreach(split(/\,/,$FM{id})) { $bedingung.="k.kategorie_id='$_' OR " ; } chop($bedingung);chop($bedingung);chop($bedingung); $bedingung.=")"; $bedingung="a.angebot='1'" if($FM{a} eq "sonder"); my $tm="" ; $FM{subkid}=$FM{kid} ; my $d=$dbh->prepare(" SELECT k.artikel_id, av.id, av.fakepreis, count(k.artikel_id) pnr, a.bild_id, at.titel, a.tag, at.beschreibung, at.zustand, at.schlagworte, at.subtitel , a.status, b.file, a.angebot FROM artikel_kat k LEFT JOIN artikel a ON a.id=k.artikel_id LEFT JOIN artikel_var av ON av.artikel_id=a.id LEFT JOIN artikel_text at ON at.artikel_id=a.id LEFT JOIN bilder b ON b.id=a.bild_id WHERE (a.status='online' OR a.status='nichtkaufbar') AND $bedingung GROUP BY a.id ORDER BY av.preis,a.score") or die $DBI::errstr ; my $nr=0 ; $d->execute ; while(my($i,$avi,$fp,$pnr,$bi,$t,$tag,$b,$z,$sw,$st,$status,$be,$sonder,$kat)=$d->fetchrow) { #$b=$z if($FM{a} eq "sonder"); $bi=~s/(\d*).*/$1/; $b=~s/
/ /ig ; $b=~s/<.*>//g ; $b=substr($b,0,350)."... » mehr" if (length($b)>400) ; $b=$z if($sonder && $z); $tm.=qq~
$t $sw

$t

$st

$b
\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~
Preis auf Anfrage
~; #} else { 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 "sonder") { ## SubKategorie List $tmpl = &loadtmpl2("shop/list.html") ; ($FM{titel})=&fetchdb("SELECT titel FROM kategorie_text WHERE kategorie_id='$FM{id}' AND sprache='$CO{sprache}'") unless($FM{titel}); $FM{titel}="Sonderangebote" if( $FM{a} eq "sonder"); $tmpl =~ s/\[titel\]/$FM{titel}/ig ; $tmpl =~ s/\[kid\]/$FM{kid}/ig ; $tmpl =~ s/\[sort\:$FM{sort}\]/selected/ig ; setCookie("kat",$FM{id}); $sortieren="a.score DESC" ; $sortieren="apreis" if($FM{sort} eq "preis") ; $sortieren="a.titel" if($FM{sort} eq "titel") ; my $bedingung="("; foreach(split(/\,/,$FM{id})) { $bedingung.="k.kategorie_id='$_' OR " ; } chop($bedingung);chop($bedingung);chop($bedingung); $bedingung.=")"; $bedingung="a.angebot='1'" if($FM{a} eq "sonder"); my $tm="" ; $FM{subkid}=$FM{kid} ; my $d=$dbh->prepare(" SELECT k.artikel_id, av.id, av.fakepreis, count(k.artikel_id) pnr, a.bild_id, at.titel, a.tag, at.beschreibung, at.zustand, at.schlagworte, at.subtitel , b.file, a.angebot FROM artikel_kat k LEFT JOIN artikel a ON a.id=k.artikel_id LEFT JOIN artikel_var av ON av.artikel_id=a.id LEFT JOIN artikel_text at ON at.artikel_id=a.id LEFT JOIN bilder b ON b.id=a.bild_id WHERE (a.status='online' OR a.status='nichtkaufbar') AND $bedingung GROUP BY a.id ORDER BY a.sortier,av.preis,a.score") or die $DBI::errstr ; my $nr=0 ; $d->execute ; while(my($i,$avi,$fp,$pnr,$bi,$t,$tag,$b,$z,$sw,$st,$be,$sonder,$kat)=$d->fetchrow) { #$b=$z if($FM{a} eq "sonder"); $bi=~s/(\d*).*/$1/; $b=~s/
/ /ig ; $b=~s/<.*>//g ; $b=substr($b,0,350)."... » mehr" if (length($b)>400) ; $b=$z if($sonder && $z); $tm.=qq~
$t $sw

$t

$st

$b
\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~
$t
$b
~ ; } $d->finish() ; $tm.="" ; $tmpl =~ s/\[nr\]/$nr/ig ; $tmpl =~ s/\[seiten\]//ig ; $tmpl =~ s/\[name\]/Suchergebnisse/ig ; $tmpl =~ s/\[list\]/$tm/ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "suche") { $tmpl = &loadtmpl2("shop/list.html") ; my $where="" ; my $where2="" ; $FM{sbeg}=~s/[\.\,]//g ; if ($FM{sbeg}=~m/\d\d\d\d\d/) { my ($ai)=&fetchdb("SELECT artikel.id FROM artikel_var,artikel WHERE bestellnummer='$FM{sbeg}' AND artikel.id=artikel_var.artikel_id AND artikel.status='online'") ; if($ai>0) { $where.="AND id='$ai' " ; } else { goto NS ; } } elsif ($FM{sbeg} eq "Suche" || $FM{sbeg} eq "" ) { my $tm=qq~

Ohne Suchbegriff - keine Suche ;-)
~ ; $tmpl =~ s/\[seiten\]//ig ; $tmpl =~ s/\[titel\]/Suchergebnisse/ig ; $tmpl =~ s/\[list\]/$tm/ig ; $tmpl =~ s/Artikel//i ; $tmpl =~ s/\[nr\]/$nr/ig ; &print_tmpl($tmpl) ; exit() ; } else { NS: $FM{sbeg}=~s/\+/\s/g ; my @beg=split(/\s/,$FM{sbeg}) ; $where.="AND (" ; $where2=$where ; foreach(@beg) { $where.="(at.titel LIKE '\%$_\%' OR at.schlagworte LIKE '\%$_\%') AND " ; $where2.="(at.beschreibung LIKE '\%$_\%') AND " ; } chop($where) ; chop($where) ; chop($where) ; chop($where) ; $where.=")" ; } my $d=$dbh->prepare("SELECT a.id,a.bild_id,at.titel,at.beschreibung FROM artikel a INNER JOIN artikel_text at ON at.artikel_id=a.id WHERE a.status='online' AND a.newsletter=0 $where ORDER BY a.score DESC,at.titel") ; $d->execute ; my $nr=$d->rows() ; $dbh->do("INSERT INTO suchbegriffe (begriff,treffer,ip) VALUES ('$FM{sbeg}','$nr','$ENV{REMOTE_ADDR}')") ; if ($d->rows()==0) { $tmpl =~ s/\[titel\]/Suchergebnisse/ig ; $tmpl =~ s/\[list\]/Leider keine Treffer für "$FM{sbeg}"./ig ; $tmpl=~s/\[sbeg\]/$FM{sbeg}/ig ; &print_tmpl($tmpl) ; exit ; } if ($d->rows()==1) { my $set=$d->fetchrow_hashref() ; $d->finish() ; umleiten("/$_scriptname?a=show&id=$set->{id}") ; 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,350)."..." if (length($b)>350) ; $tm.=qq~
$t
$b
~ ; } $d->finish() ; $tmpl =~ s/\[nr\]/$nr/ig ; $tmpl =~ s/\[seiten\]//ig ; $tmpl =~ s/\[titel\]/Suchergebnisse/ig ; $tmpl =~ s/\[list\]/$tm/ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "login") { if($_kunden_id) { $FM{a}="status" ; goto START; ; } else { if ($FM{passwort}) { if ($FM{email}=~m/@/) { $data=$dbh->prepare("SELECT id,typ FROM kunden WHERE email LIKE \"$FM{email}\" AND passwort=\"$FM{passwort}\" ") or die $DBI::errstr ; $data->execute() ; } else { $data=$dbh->prepare("SELECT id,typ FROM kunden WHERE id = \"$FM{email}\" AND passwort=\"$FM{passwort}\" ") or die $DBI::errstr ; $data->execute() ; } if ($data->rows() > 0) { my ($_kunden_id,$typ) = $data->fetchrow() ; $data->finish() ; $dbh->do("UPDATE sid SET kunden_id='$_kunden_id',datum=now(),ip='$ENV{REMOTE_ADDR}',typ='$typ' WHERE sid='$_session_id'") or die $DBI::errstr ; $dbh->do("UPDATE kunden SET login_count=login_count+1,last_login=NOW(),last_login_ip='$ENV{REMOTE_ADDR}' WHERE id='$_kunden_id'") or die $DBI::errstr ; $FM{aa}="profil" unless($FM{aa}); ¨eiten("/$_scriptname?a=$FM{aa}"); exit; } else { $tmpl = &loadtmpl2("shop/login.html") ; $tmpl =~ s/\[aa\]/$FM{aa}/ig ; $tmpl =~ s//\{login_err\}/is ; $data->finish() ; } } else { $tmpl = &loadtmpl2("shop/login.html") ; $tmpl =~ s/\[aa\]/$FM{aa}/ig ; } } &print_tmpl($tmpl) ; } elsif ($FM{a} eq "kontakt") { $FM{email}=~s/\n//g ; $FM{email}=~s/bcc\://ig ; $FM{frage}=~s/\n/
/g ; my $datum=&mkdatum() ; $tmpl=qq~$datum

Kundennummer$FM{knr}
Firma$FM{firma}
Name$FM{vorname} $FM{nachname}
Strasse$FM{strasse}
Ort$FM{plz} $FM{ort}
Tel$FM{tel}
Email$FM{email}
Anfrage$FM{frage}
Your IP was logged: $ENV{REMOTE_ADDR}
~ ; my $zusatz="$ENV{HTTP_USER_AGENT}
" ; my $ziel='info@flux-hifi.de' ; #$ziel='tyr@urbanbytes.de' ; #$ziel="o.eschbach\@everdry.de" if($CO{sprache} eq "ru") ; &sendmail("Kontaktanfrage Flux Hifi - $FM{email} <$FM{email}>",$FM{email},$ziel,"$CO{sprache} Anfrage von Kontaktformular",$tmpl.$zusatz) ; $tmpl = &loadtmpl2("shop/kontakt.html") ; $tmpl=~s/.*/
{kontakt_ok}<\/div>/si ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "kauf_fertig") { (my $typ)=&fetchdb("SELECT typ FROM sid WHERE sid='$CO{sid}'") ; $FM{nachname}="\u$FM{nachname}" ; $FM{vorname}="\u$FM{vorname}" ; $FM{strasse}="\u$FM{strasse}" ; $FM{ort}="\u$FM{ort}" ; $FM{err}="" ; $FM{ladresse}="1" unless($FM{l_plz}) ; goto nixtest if($typ eq "Apotheke" || $typ eq "Handel" ) ; $FM{err}.="• Ihr Vorname fehlt!
" unless ($FM{vorname}) ; $FM{err}.="• Ihr Nachname fehlt!
" unless ($FM{nachname}) ; $FM{err}.="• Die Strasse fehlt!
" unless ($FM{strasse}) ; $FM{err}.="• Die Hausnummer fehlt!
" unless ($FM{strasse}=~ m/\d/g) ; $FM{err}.="• Das Land fehlt!
" unless ($FM{land}) ; $FM{err}.="• Ihr Wohnort fehlt!
" unless ($FM{ort}) ; $FM{err}.="• Nachnahme können wir Ihnen nur innerhalb Deutschlands anbieten
" if ($FM{zahlweise} eq "n" && $FM{land}!=999) ; $FM{err}.="• Die Anrede wurde nicht gewählt!
" unless ($FM{anrede}) ; $FM{err}.="• Postleitzahl fehlt!
" unless ($FM{plz}=~/\d{4,5}/) ; #$FM{err}.="• Ihre Telefonnummer fehlt!
" unless (length($FM{tel})>3) ; #$FM{err}.="• Emailadressen sind nicht gleich, bitte überprüfen
" if (lc($FM{email}) ne lc($FM{email2})) ; $FM{err}.="• Eine Emailadresse fängt nie mit \"www.\" an!
" if ($FM{email} =~ m/^www\./) ; $FM{err}.="• Emailadresse fehlt oder ist falsch!
" if ($FM{email} !~ m/.*\@.*\.\w{2,4}/) ; my ($cid)=&fetchdb("SELECT id FROM kunden WHERE email='$FM{email}'") ; #$FM{err}.="• Emailadresse ist schon registriert! Bitte fordern Sie das Passwort mit diesem Link an!" if ($cid && $_kunden_id==0 && $FM{email}) ; $FM{err}.="• Bitte wählen Sie eine Zahlweise
" unless ($FM{zahlweise}) ; $FM{err}.="• Ihr Warenkorb ist leer! Bitte wählen sie Ihre Produkte aus.
" unless (length($_warenkorb)>2) ; if ($FM{zahlweise} eq "l" && $FM{land} ne "999") { $FM{err}.="• Lastschrift können wir leider nur innerhalb D anbieten.
" ; } if ($FM{zahlweise} eq "l") { $FM{err}.="• Kontonummer fehlt!
" unless ($FM{account}) ; $FM{err}.="• Kontoinhaber fehlt!
" unless ($FM{kontoinhaber}) ; $FM{err}.="• Bankleitzahl fehlt!
" unless ($FM{blz}) ; } unless ($FM{ladresse}>0) { $FM{err}.="• Liefer-Vorname fehlt!
" unless ($FM{l_vorname}) ; $FM{err}.="• Liefer-Nachname fehlt!
" unless ($FM{l_nachname}) ; $FM{err}.="• Liefer-Strasse fehlt!
" unless ($FM{l_strasse}) ; $FM{err}.="• Ihr Liefer-Wohnort fehlt!
" unless ($FM{l_ort}) ; $FM{err}.="• Liefer-Anrede nicht gewählt!
" unless ($FM{l_anrede}) ; $FM{err}.="• Liefer-Postleitzahl fehlt!
" unless ($FM{l_plz}) ; $FM{err}.="• Das Liefer-Land fehlt!
" unless ($FM{l_land}) ; } $FM{firma}="nr$FM{firma}" if($FM{firma}=~ m/\d\d\d\d\d\d/) ; $FM{l_firma}="nr$FM{l_firma}" if($FM{l_firma}=~ m/\d\d\d\d\d\d/) ; #$FM{strasse}="Packstation $FM{strasse}" unless($FM{strasse}=~ m/\D/) ; #$FM{l_strasse}="$FM{l_strasse}" unless($FM{l_strasse}=~ m/\D/) ; goto kaufen if ($FM{err}) ; nixtest: $tmpl = &loadtmpl2("shop/kauf_fertig.html") ; ($land) =&fetchdb("SELECT de FROM laender WHERE id='$FM{land}' LIMIT 1") ; ($l_land)=&fetchdb("SELECT de FROM laender WHERE id='$FM{l_land}' LIMIT 1") ; $FM{rechnungsa}="" ; $FM{liefera}="" ; $FM{rechnungsa}.="$FM{firma}
" if($FM{firma}) ; $FM{rechnungsa}.="$FM{abteilung}
" if($FM{abteilung}) ; $FM{rechnungsa}.="$FM{anrede} $FM{titel} $FM{vorname} $FM{nachname}
$FM{strasse}
$FM{plz} $FM{ort}
$land

" ; $FM{liefera}.="$FM{l_firma}
" if($FM{l_firma}) ; $FM{liefera}.="$FM{l_abteilung}
" if($FM{l_abteilung}) ; $FM{liefera}.="$FM{l_anrede} $FM{l_titel} $FM{l_vorname} $FM{l_nachname}
$FM{l_strasse}
$FM{l_plz} $FM{l_ort}
$l_land
" ; $FM{liefera} ="Lieferung geht an Rechnungsadresse" if($FM{ladresse}) ; $land=$FM{l_land}; $land=$FM{land} if($FM{ladresse} == 1); ($FM{list},$smail)=&artikel_liste(0,0,0,$land) ; $FM{list}=~ s/.*//si ; $FM{gwert}=~s/\,/\./ ; $FM{account2}=$FM{account} ; chop($FM{account2}); chop($FM{account2}); chop($FM{account2}); chop($FM{account2}); $FM{account2}.="xxxx" ; if ($FM{zahlweise}eq "r") { $FM{bezahlung}="Rechnung" ; } elsif ($FM{zahlweise}eq "n") { $FM{bezahlung}="Nachnahme" ; } elsif ($FM{zahlweise}eq "p") { $FM{bezahlung}="PayPal - Sie bezahlen im Anschluss an die Bestellung" ; } elsif ($FM{zahlweise}eq "l") { $FM{bezahlung}="per Lastschrift, der Rechnungsbetrag wird von Ihrem Konto $FM{account2} (Kontonummer aus Sicherheitsgründen gekürzt), bei der $FM{blz} $FM{bank_name} abgebucht." ; } elsif ($FM{zahlweise}eq "v") { $FM{bezahlung}="Vorkasse, Bitte überweisen Sie den Rechnungsbetrag auf unser Konto. Die Ware verlässt unser Haus sofort nach Eingang Ihrer Zahlung." ; } $mtmpl=~s/.*//si unless(length($FM{comment})>5) ; $tmpl=~s/.*//si unless(length($FM{comment})>5) ; $tmpl=~s//$FM{err}/ig; $tmpl=~s/
// unless($FM{err}); foreach(keys(%FM)) { $tmpl =~s/\[$_\]/$FM{$_}/ig ; } $tmpl=~s/\[ladresse\]/$FM{ladresse}/ig; $tmpl=~s/\[newsletter\]/$FM{newsletter}/ig; #$tmpl=~s/\[[\w\_]*\]//ig; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "kauf_ende") { if ($FM{agb}<1) { $FM{err}="
Bitte bestätigen Sie unsere AGB mit einem klick auf das Kästchen!
" ; goto nixtest ; } $FM{gwert}=~s/\,/\./ ; $FM{account2}=$FM{account} ; chop($FM{account2}); chop($FM{account2}); chop($FM{account2}); chop($FM{account2}); $FM{account2}.="xxxx" ; if ($FM{zahlweise} eq "r") { $FM{bezahlung}="per Rechnung" ; } elsif ($FM{zahlweise} eq "n") { $FM{bezahlung}="Nachnahme" ; } elsif ($FM{zahlweise} eq "l") { $FM{bezahlung}="per Lastschrift, der Rechnungsbetrag wird von Ihrem Konto $FM{account2} (Kontonummer aus Sicherheitsgründen gekürzt), bei der $FM{blz} $FM{bank_name} abgebucht." ; } elsif ($FM{zahlweise} eq "v") { $FM{bezahlung}="per Vorkasse, Bitte überweisen Sie den Rechnungsbetrag auf unser Konto. Die Ware verlässt unser Haus sofort nach Eingang Ihrer Zahlung." ; } elsif ($FM{zahlweise} eq "p") { $FM{bezahlung}="PayPal Zahlung im Anschluss an die Bestellung" ; } elsif ($FM{zahlweise} eq "f") { $FM{bezahlung}="Finanziert"; } $tmpl = &loadtmpl2("shop/kauf_ende.html") ; $mtmpl = &language(&loadtmpl("shop/mail_order.htm")) ; ## MwSt für Ausländer $mtxt=qq~Hinweis: Falls Sie innerhalb der EU bestellen und eine gültige Mehrwertsteuer ID bei Ihrer Bestellung angegeben haben entfällt die Mehrwertsteuer auf der Rechnung. Sie entfällt ebenso bei Bestellungen ausserhalb der EU.~ ; if ($FM{land} != 999) { $mtmpl=~s//$mtxt/ig ; } if ($FM{anrede}=~/Herr/) { $FM{kanrede}="Sehr geehrter Herr $FM{titel} $FM{nachname}," ; } elsif ($FM{anrede}=~/Frau/) { $FM{kanrede}="Sehr geehrte Frau $FM{titel} $FM{nachname}," ; } else { $FM{kanrede}="Sehr geehrte Damen und Herren," ; } my @felder=("quelle","quelle_detail","firma","abteilung","anrede","titel","vorname","nachname","strasse","plz","ort","land","l_firma","l_abteilung","l_anrede","l_titel","l_vorname","l_nachname","l_strasse","l_plz","l_ort","l_land","tel","fax","email","ladresse","zahlweise","kontoinhaber","account","blz","bank_name","ustid") ; my @felder_l=("l_firma","l_abteilung","l_anrede","l_titel","l_vorname","l_nachname","l_strasse","l_plz","l_ort","l_land","ladresse") ; # In die DB schreiben: # Kundendaten aktualisieren my $query="" ; if ($_kunden_id && length($FM{neukunde})==0) { $query="UPDATE kunden SET " ; foreach(@felder) { $query.="$_=".$dbh->quote("$FM{$_}")."," unless($_ eq 'quelle_detail'); } chop($query) ; $query.=" WHERE id='".$_kunden_id."'" ; $dbh->do($query) ; $dbh->do("UPDATE kunden SET lastorder=NOW() WHERE id='$_kunden_id'") ; } else { ## Neukunde $query="INSERT INTO kunden (" ; my $query2="" ; foreach(@felder) { $query.="$_," ; $query2.=$dbh->quote("$FM{$_}")."," ; } chop($query) ; chop($query2) ; $query.=") VALUES ($query2)" ; $dbh->do($query) ; $_kunden_id=$dbh->{mysql_insertid} ; my $pw = lc(pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97))) ; $dbh->do("UPDATE kunden SET firstday=NOW(),lastorder=NOW(),passwort='$pw' WHERE id='$_kunden_id'") ; $kmtmpl = &loadtmpl("shop/mail_neukunde.htm") ; $kmtmpl=~s/\[pw\]/$pw/ig ; $kmtmpl=~s/\[email\]/$FM{email}/ig ; $kmtmpl=~s/\[kanrede\]/$FM{kanrede}/ig ; &sendmail("Flux Hifi ","info\@flux-hifi.de",$FM{email},"Ihre Registrierung bei Flux Hifi",&language($kmtmpl)) ; } $FM{kunden_id}=$_kunden_id; $FM{comment}.=$CO{comment} ; $FM{comment}=~s/
/\n/ig ; $FM{comment}=~s/\n/ /g ; ## Bestellung in db: my $km=$dbh->quote("$FM{comment}") ; (my $wert=$FM{wert})=~ s/\,/\./ ; $dbh->do("INSERT INTO bestellungen (partner_id,datum,kunden_id,bestellwert,warenkorb,comment,newsletter,ip,zahlweise,gutschein,google,inzahlungnahme) VALUES ('$CO{partner}',NOW(),'$_kunden_id','$wert','$_warenkorb',$km,'$CO{newsletter}','$ENV{REMOTE_ADDR}','$FM{zahlweise}','$FM{code}','$CO{google}','$FM{inzcod}')") ; my $bnr=$dbh->{mysql_insertid} ; unless($FM{ladresse}) { $query="UPDATE bestellungen SET " ; foreach(@felder_l) { $query.="$_=".$dbh->quote("$FM{$_}")."," ; } chop($query) ; $query.=" WHERE id='".$bnr."'" ; $dbh->do($query) ; } my $land=$FM{l_land} ; $land=$FM{land} if($FM{ladresse}) ; if ($FM{newsletter}) { my ($e)=&fetchdb("SELECT email FROM newsletter_kunden WHERE email LIKE '$FM{email}'") ; my $uid = uc(pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97))) ; $dbh->do("INSERT INTO newsletter_kunden (id,email,datum,optin,anrede,vorname,name,ip) VALUES ('$uid','$FM{email}',NOW(),'bei Bestellung','$FM{anrede}','$FM{vorname}','$FM{nachname}','$ENV{REMOTE_ADDR}')") unless (length($e)>1) ; } ################################ ($FM{land}) =&fetchdb("SELECT de FROM laender WHERE id='$land' LIMIT 1") ; ($FM{l_land})=&fetchdb("SELECT de FROM laender WHERE id='$FM{l_land}' LIMIT 1") ; $FM{datum}=&mkdatum2() ; my $bdatum=$FM{datum} ; ## Posten in DB ($alist,$smail,$provi)=&artikel_liste(1,$bnr,$FM{zahlweise},$land) ; $alist=~ s/.*//si ; $smail.="Mitteilung: $FM{comment}" ; $mtmpl =~s/\[list\]/$alist/ig ; $mtmpl =~s/\[bid\]/$bnr/ig ; $FM{rechnungsa}="" ; $FM{liefera}="" ; $FM{rechnungsa}.="$FM{firma}
" if($FM{firma}) ; $FM{rechnungsa}.="$FM{abteilung}
" if($FM{abteilung}) ; $FM{rechnungsa}.="$FM{anrede} $FM{titel} $FM{vorname} $FM{nachname}
" ; $FM{rechnungsa}.="$FM{strasse}
" ; $FM{rechnungsa}.="$FM{plz} $FM{ort}
" ; $FM{rechnungsa}.="$FM{land}
" ; $FM{liefera}.="$FM{l_firma}
" if($FM{l_firma}) ; $FM{liefera}.="$FM{l_abteilung}
" if($FM{l_abteilung}) ; $FM{liefera}.="$FM{l_anrede} $FM{l_titel} $FM{l_vorname} $FM{l_nachname}
" ; $FM{liefera}.="$FM{l_strasse}
" ; $FM{liefera}.="$FM{l_plz} $FM{l_ort}
" ; $FM{liefera}.="$FM{l_land}
" ; $FM{liefera} ="Lieferung geht an Rechnungsadresse" if($FM{ladresse}) ; $mtmpl=~s/.*//si unless(length($FM{comment})>5) ; foreach(keys(%FM)) { $mtmpl=~s/\[$_\]/$FM{$_}/ig ; } $FM{wert}=~s/\,/\./ ; $mtmpl =~s/src\=\"\/gfx/src\=\"$domain\/gfx/ig ; ## Bestätigungsmail für Kunde &sendmail_utf8('Flux Hifi ','info@flux-hifi.de',$FM{email},"Ihre Bestellung Nr.: $bnr-B",&language($mtmpl)) ; ## Für uns &sendmail_utf8($FM{email},$FM{email},"bestellung\@flux-hifi.de","Neue Bestellung Nr.: $bnr-B $CO{partner}",&language($mtmpl)) ; $mtmpl=$dbh->quote("$mtmpl") ; $provi=0 if($cid==$CO{pid}) ; # Betrugsversuch da Kunde = Provisionär $dbh->do("UPDATE bestellungen SET order_mail=$mtmpl, partner_provision='$provi' WHERE id='$bnr'") ; # Bei Paypal my $pptmpl=""; if($FM{zahlweise} eq "p") { $FM{bwert}=~s/\,/\./ ; $FM{bwert}=sprintf("%.02f",$FM{bwert}); my %pp=(); $pp{USER}=$_ppuser; ; $pp{PWD}=$_pppass; ; $pp{SIGNATURE}=$_ppsign; ; $pp{VERSION}="2.3" ; $pp{METHOD}="SetExpressCheckout" ; $wert=sprintf("%.02f",$wert); $pp{AMT}=$wert; $pp{EMAIL}="$FM{email}" ; $pp{DESC}="Flux Hifi Gbr" ; $pp{PAYMENTACTION}="Sale" ; $pp{CURRENCYCODE}="EUR" ; $pp{HDRIMG}=$sdomain."/gfx/pplogo.jpg" ; $pp{RETURNURL}=$sdomain."/$_scriptname?a=ppreturn" ; $pp{CANCELURL}=$sdomain."/$_scriptname?a=ppcancel" ; $pp{GIROPAYSUCCESSURL}=$sdomain."/$_scriptname?a=ppgps" ; $pp{GIROPAYCANCELURL}=$sdomain."/$_scriptname?a=ppgpc" ; $pp{BANKTXNPENDINGURL}=$sdomain."/$_scriptname?a=ppvk" ; $pp{INVNUM}=$bnr ; if($FM{ladresse}) { $FM{l_anrede}=$FM{anrede}; $FM{l_titel}=$FM{titel}; $FM{l_vorname}=$FM{vorname}; $FM{l_nachname}=$FM{nachname}; $FM{l_strasse}=$FM{strasse}; $FM{l_firma}=$FM{firma}; $FM{l_ort}=$FM{ort}; $FM{l_plz}=$FM{plz}; $FM{l_abteilung}=$FM{abteilung}; } $pp{SHIPTONAME}="$FM{l_anrede} $FM{l_titel} $FM{l_vorname} $FM{l_nachname}"; $pp{SHIPTOADDRESS}="$FM{l_firma} $FM{l_abteilung} "; $pp{SHIPTOSTREET}="$FM{l_strasse}"; $pp{SHIPTOCITY}="$FM{l_ort}"; $pp{SHIPTOZIP}="$FM{l_plz}"; $pp{SHIPTOCOUNTRYNAME}="$land"; $pp{SHIPTOCOUNTRYCODE}="DE"; #$pp{NOSHIPPING}=1; $pp{ADDROVERRIDE}=1; ($reply_data, $reply_type, %reply_headers) = post_https($_pphost, "443", "/nvp", '',make_form(%pp)); ## Parse Response my %ppr=&GetValues($reply_data); if($ppr{ACK} eq "Success") { my $token=$ppr{TOKEN}; $token=~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; $pplink="https://www.$_ppsite$_ppscipt?cmd=_express-checkout&token=$token"; $FM{wert}=sprintf("%.02f",$FM{wert}) ; $pptmpl=qq~
Bitte bezahlen Sie jetzt $wert EUR per PayPal


Bezahlvorgang starten

~; } else { my ($f)=fetchdb("SELECT fehler FROM paypal_errors WHERE id='$ppr{L_ERRORCODE0}'"); $pptmpl=qq~
Leider ist mit Ihrer Paypal Zahlung etwas schief gelaufen. Bitte Kontaktieren Sie uns um die Zahlung abzuschließen.

$ppr{L_LONGMESSAGE0} ($ppr{L_ERRORCODE0})

~; foreach(keys %pp) { $pptmpl.="$_ = $pp{$_}
"; } } $tmpl=~s/ - sie ist nun abgeschlossen.//i; $tmpl =~s/.*/$pptmpl/si ; } # Warenkorb löschen #&setCookie("wk","") ; $tmpl =~s/\[email\]/$FM{email}/ig ; $tmpl =~s/\[wert\]/$wert/ig ; &print_tmpl($tmpl,1) ; } elsif ($FM{a} eq "ppreturn") { $tmpl = &loadtmpl2("shop/paypal.html") ; %pp=(); $pp{USER}=$_ppuser; ; $pp{PWD}=$_pppass; ; $pp{SIGNATURE}=$_ppsign; ; $pp{VERSION}="2.3" ; $pp{METHOD}="GetExpressCheckoutDetails" ; $pp{TOKEN}=$FM{token} ; ($reply_data, $reply_type, %reply_headers) = post_https($_pphost, "443", "/nvp", '',make_form(%pp)); %ppr=&GetValues($reply_data); if($ppr{ACK} eq "Success") { ($bnr=$ppr{INVNUM})=~s/\D//g; ## Paypal Postenliste erstellen und Beträge ausrechnen %pp=(); $d=$dbh->prepare("SELECT (p.preis),p.preis-(p.preis/(1+(p.umst/100))),p.anzahl,v.bestellnummer,a.id FROM posten p INNER JOIN artikel a ON a.id=p.artikel_id INNER JOIN artikel_var v ON v.id=p.artikel_var_id WHERE p.bestellungen_id='$bnr' ") ; $d->execute; my ($nr,$usum,$umstsum)=(0,0,0); while(my ($u,$umst,$anz,$anr,$aid)=$d->fetchrow) { if($aid==838) { $porto=$u; } else { #$pp{'L_NAME'.$nr}=$a; #$pp{'L_NAME'.$nr}.=": $v" if($v); #$pp{'L_NAME'.$nr}.=", $v2" if($v2); #$pp{'L_NAME'.$nr}.=", $v3" if($v3); #$pp{'L_NUMBER'.$nr}=$anr; #$pp{'L_QTY'.$nr}=$anz; #$pp{'L_TAXAMT'.$nr}=sprintf("%.02f",$umst*$anz) ; #$pp{'L_AMT'.$nr}=sprintf("%.02f",$u*$anz+$umst*$anz) ; $nr++ ; $usum+=$u*$anz ; } $umstsum+=$umst*$anz ; } $d->finish; $pp{USER}=$_ppuser; ; $pp{ITEMAMT}=&runden($usum-$umstsum+$porto,2) ; $pp{TAXAMT}=&runden($umstsum,2) ; $pp{HANDLINGAMT}=sprintf("%.2f",0) ; $pp{USER}=$_ppuser; ; $pp{PWD}=$_pppass; ; $pp{SIGNATURE}=$_ppsign; ; $pp{VERSION}="2.3" ; $pp{SHIPPINGAMT}=sprintf("%.2f",$porto) ; $pp{AMT}=&runden($usum,2) ; $pp{CURRENCYCODE}="EUR" ; $pp{PAYMENTACTION}="Sale" ; $pp{PAYERID}=$ppr{PAYERID} ; $pp{METHOD}="DoExpressCheckoutPayment" ; $pp{TOKEN}=$FM{token} ; $pp{DESC}="Flux Hifi / Bestellung: $bnr-O" ; $pp{SHIPTONAME}=$ppr{SHIPTONAME}; $pp{SHIPTOSTREET}=$ppr{SHIPTOSTREET}; $pp{SHIPTOSTREET2}=$ppr{SHIPTOSTREET2}; $pp{SHIPTOCITY}=$ppr{SHIPTOCITY}; $pp{SHIPTOZIP}=$ppr{SHIPTOZIP}; $pp{SHIPTOCOUNTRYNAME}=$ppr{SHIPTOCOUNTRYNAME}; $pp{SHIPTOCOUNTRYCODE}=$ppr{SHIPTOCOUNTRYCODE}; %ppr=(); ($reply_data, $reply_type, %reply_headers) = post_https($_pphost, "443", "/nvp", '',make_form(%pp)); %ppr=&GetValues($reply_data); if($ppr{ACK} eq "Success") { if($ppr{PAYMENTSTATUS} eq "Completed") { $bwert=&FormatZahl($ppr{AMT},2); $pptmpl=qq~

Vielen Dank, Ihre Zahlung über $bwert für die Bestellung ~.$bnr.qq~-O wurde erfolgreich abgeschlossen.

Ihr Flux Hifi Team.

~; $dbh->do("UPDATE bestellungen SET bezahlt=NOW() WHERE id='$bnr'"); } else { $pptmpl=qq~

Vielen Dank, Ihre Zahlung gestartet. Eventuell müssen nun noch weitere Schritte von Ihnen durchgeführt werden.

Ihr Flux Hifi Team.

~; } } else { my ($f)=fetchdb("SELECT fehler FROM paypal_errors WHERE id='$ppr{L_ERRORCODE0}'"); $pptmpl=qq~
Leider ist mit Ihrer Paypal Zahlung für Bestellung $bnr-O etwas schief gelaufen. Bitte Kontaktieren Sie uns um die Zahlung abzuschließen.

$f


Fehler: $ppr{L_ERRORCODE0}
~; $pp{USER}='';$pp{PWD}='';$pp{SIGNATURE}=''; foreach(sort(keys(%pp))) { $pptmpl.="$_ = $pp{$_}
" ; } foreach(sort(keys(%ppr))) { $pptmpl.="$_ = $ppr{$_}
" ; } $pptmpl.=&runden($usum+$umstsum+$porto,2)."$usum+$umstsum+$porto" ; if($ppr{L_ERRORCODE0} eq "10422") { $pplink="https://www.$_ppsite$_ppscipt?cmd=_express-checkout&token=$FM{token}"; $pptmpl.="

» Zurück zu PayPal und andere Zahlungsart auswählen

"; } $pptmpl.="
"; } } else { my ($f)=fetchdb("SELECT fehler FROM paypal_errors WHERE id='$ppr{L_ERRORCODE0}'"); $pptmpl=qq~
Leider ist mit Ihrer Paypal Zahlung etwas schief gelaufen. Bitte Kontaktieren Sie uns um die Zahlung abzuschließen.

$f

$ppr{L_ERRORCODE0}
~; } $tmpl =~s/\[list\]/$pptmpl/si ; &print_tmpl($tmpl,1) ; } elsif ($FM{a} eq "ppgps") { $tmpl = &loadtmpl2("shop/paypal.html") ; $pptmpl=qq~
Ihre Zahlung per PayPal/Giropay wurde erfolgreich abgeschlossen.~; $tmpl =~s/\[list\]/$pptmpl/si ; &print_tmpl($tmpl,0,1) ; } elsif ($FM{a} eq "ppcancel") { my ($f)=fetchdb("SELECT fehler FROM paypal_errors WHERE id='$FM{L_ERRORCODE0}'"); $tmpl = &loadtmpl2("shop/paypal.html") ; $pplink="https://www.$_ppsite$_ppscipt?cmd=_express-checkout&token=$FM{token}"; $pptmpl=qq~
Ihre Zahlung per PayPal wurde abgebrochen. Bitte Kontaktieren Sie uns um die Zahlung abzuschließen oder:

» Zurück zu PayPal und noch einmal versuchen

~; $tmpl =~s/\[list\]/$pptmpl/si ; &print_tmpl($tmpl,0,1) ; } elsif ($FM{a} eq "ppgpc") { my ($f)=fetchdb("SELECT fehler FROM paypal_errors WHERE id='$FM{L_ERRORCODE0}'"); $tmpl = &loadtmpl2("shop/paypal.html") ; $pptmpl=qq~
Ihre Zahlung per PayPal/Giropay ist leider fehlgeschlagen. Bitte Kontaktieren Sie uns um die Zahlung abzuschließen.

$FM{L_LONGMESSAGE0}

~; $tmpl =~s/\[list\]/$pptmpl/si ; &print_tmpl($tmpl,0,1) ; } elsif ($FM{a} eq "ppvk") { $tmpl = &loadtmpl2("shop/paypal.html") ; $pptmpl=qq~
Sie habenn PayPal/Vorkasse als Zahlungsmethode gewählt. Bitte überweisen Sie den fälligen Betrag an PayPal und zei

$ppr{L_LONGMESSAGE0}

~; $tmpl =~s/\[list\]/$pptmpl/si ; &print_tmpl($tmpl,0,1) ; } elsif ($FM{a} eq "ppipn") { %F = &get_submission; $F{cmd}="_notify-validate"; ($reply_data, $reply_type, %reply_headers) = post_https($_ppsite, $_ppport, $_ppscript, '',make_form(%F)); # Split Post Data @postData = values %F; $postData = join(',',@postData); ## Parse Response $d=&mkdatum; if($reply_data eq "VERIFIED") { open(LOGFILE, ">>$root/pp_success_log") ; print LOGFILE "$d --- $postData\r\n"; close(LOGFILE); } else { open(LOGFILE, ">>$root/pp_error_log") ; print LOGFILE "$d --- $postData\r\n"; close(LOGFILE); } print_tmpl(); } elsif ($FM{a} eq "feedback") { my $index="Seite: " ; my ($c)=&fetchdb("SELECT count(id) FROM feedback WHERE 1") ; my $seiten=int($c/10)+1 ; for($x=1;$x<=$seiten;$x++) { if(int($FM{o}/10+1)==$x) { $index.="$x  " ; } else { $index.="$x  " ; } } $FM{o}="0" unless($FM{o}) ; $tmpl = &loadtmpl2("shop/feedback.html") ; my $data=$dbh->prepare("SELECT txt,DATE_FORMAT(datum,'%e.%m.%Y') FROM feedback ORDER BY datum DESC LIMIT $FM{o},10") ; my $z="" ; $data->execute() ; while(my ($d,$dat)=$data->fetchrow()) { chop($d) ; $d=~s/\n/
/ig ; #$z.=qq~
$dat

$d
~; $z.=qq~

$d
~; $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~
{send_pwd}


» Login~ ; $tmpl=~s/.*/$txt/si ; $mtmpl = &language(&loadtmpl("shop/mail_pwlost.htm")) ; $a="Sehr geehrte " if($ti eq "Frau") ; $a="Sehr geehrter " if($ti eq "Herr") ; $dat=&mkdatum()." Uhr" ; $mtmpl=~s/\[kanrede\]/$a $ti $nn/ig ; $mtmpl=~s/\[email\]/$em/ig ; $mtmpl=~s/\[datum\]/$dat/ig ; $mtmpl=~s/\[kunden_id\]/$ki/ig ; $mtmpl=~s/\[pw\]/$pw/ig ; $mtmpl=&language($mtmpl) ; &sendmail('Flux Hifi ','info@flux-hifi.de',$FM{email},"Ihr Passwort",$mtmpl) ; } else { my $txt=qq~
{pwd_error}
~ ; $tmpl=~s//$txt/i ; $tmpl=~s/\[email\]/$FM{email}/ig ; } &print_tmpl($tmpl) ; } elsif ($FM{a} eq "pwlost") { $tmpl = &loadtmpl2("shop/pwlost.html") ; $tmpl=~s/\[email\]//ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "kauf") { ## jetzt wird gekauft... if($FM{Submit} eq "aktualisieren") { my $wk="" ; for($x=0;$x<$FM{anzahl};$x++) { $wk.= $FM{"id".$x}."x".$FM{"nr".$x}."o" if($FM{"nr".$x}>0) ; } $dbh->do("UPDATE sid SET warenkorb='$wk' WHERE sid='$_session_id'") ; umleiten("/$_scriptname?a=showkorb") ; goto FERTIG; } if ($_kunden_id>0 || $FM{neukunde}) { ######### entweder eingeloggt oder Neukunde kaufen: ##################### Einsprung von kaufen_fertig bei Fehler $tmpl = &loadtmpl2("shop/kauf.html") ; ################ Select Felder generieren my $bl="" ; $data=$dbh->prepare("SELECT id,name FROM quellen WHERE hidden IS NULL ORDER BY name") ; $data->execute() ; while(my($i,$n)=$data->fetchrow()) { $bl.=qq~\n~ ; } $data->finish() ; $tmpl =~ s//$bl/gi ; my $l="\n" ; my $ll="\n" ; $data=$dbh->prepare("SELECT id,$CO{sprache} FROM laender WHERE (porto>0 or id='999') ORDER BY $CO{sprache} ") ; $data->execute() ; while(my($i,$n)=$data->fetchrow()) { $l.=qq~\n~ ; $ll.=qq~\n~ ; } $data->finish() ; $tmpl =~s/\[landliste\]/$l/ig ; $tmpl =~s/\[l_landliste\]/$ll/ig ; if($FM{err}) { $tmpl =~s//
Folgende Probleme sind aufgetreten:

$FM{err}<\/div>/ig ; foreach(keys(%FM)) { $tmpl=~s/\[$_\]/$FM{$_}/ig ; $tmpl=~s/\[$_\:$FM{$_}\]/selected/ig if($_ eq 'anrede' || $_ eq 'land' || $_ eq 'l_anrede' || $_ eq 'l_land' || $_ eq 'quelle') ; $tmpl=~s/\[$_\:$FM{$_}\]/checked/ig if($_ eq 'zahlweise' || $_ eq 'ladresse' || $_ eq 'newsletter') ; } } my $land="999" ; if($FM{neukunde}) { $tmpl =~s/.*//si ; $tmpl =~s/\[land:999\]/selected/ig unless($FM{err}) ; $tmpl =~s/\[l_land:999\]/selected/ig unless($FM{err}) ; $tmpl =~s/\[ladresse\:1\]/checked/ig unless($FM{err}) ; $tmpl =~s/\[neukunde\]/1/ig ; } else { $tmpl =~s/.*//si ; $data=$dbh->prepare("SELECT * FROM kunden WHERE id='$_kunden_id'") ; $data->execute() ; my $set=$data->fetchrow_hashref() ; $set->{email2}=$set->{email} ; $land=$set->{l_land} ; $land=$set->{land} if($set->{ladresse}==1);; $tmpl =~ s/\[ladresse\:1\]/checked/ if($set->{ladresse}==1) ; foreach(keys(%{$set})) { $tmpl=~s/\[$_\:$set->{$_}\]/selected/ig if($_ eq 'anrede' || $_ eq 'land' || $_ eq 'l_anrede' || $_ eq 'l_land' || $_ eq 'quelle') ; $tmpl=~s/\[$_\]/$set->{$_}/ig ; $tmpl=~s/\[$_\:$set->{$_}\]/checked/ig if($_ eq 'zahlweise') ; } $data->finish() ; } ($alist,$smail)=&artikel_liste(0,0,0,$land) ; $tmpl =~s/\[list\]/$alist/ig ; $alist=~s/\"/\'/g ; $tmpl =~s/\[liste\]/$alist/ig ; $tmpl=~s/\[sdomain\]/$sdomain/i ; $tmpl=~s/\[kunden_id\]/$_kunden_id/i ; $tmpl =~s/\[menu\]/\%menu\%/ig ; $tmpl =~s/\[comment\]//ig ; $tmpl =~/\(.*)/si ; my $st=$1 ; $tmpl =~s/\.*/$st/si ; $tmpl =~s/\%menu\%/\[menu\]/ig ; &print_tmpl($tmpl,1) ; } else { ¨eiten("/$_scriptname?a=klogin&aa=kauf") ; } } elsif ($FM{a} eq "save_profil") { if ($_kunden_id>0) { my @felder=("firma","abteilung","anrede","titel","vorname","nachname","strasse","plz","ort","land","l_firma","l_abteilung","l_anrede","l_titel","l_vorname","l_nachname","l_strasse","l_plz","l_ort","l_land","tel","fax","email","ladresse","ustid") ; $FM{email}; $FM{passwort}=$FM{passwort_} ; $FM{passwort2}=$FM{passwort2_} ; my $query="" ; $query="UPDATE kunden SET " ; foreach(@felder) { $query.="$_=".$dbh->quote("$FM{$_}")."," ; } chop($query) ; $query.=" WHERE id='$_kunden_id'" ; $dbh->do($query) or die $DBI::errstr ; if($FM{passwort} && ($FM{passwort} eq $FM{passwort2})) { $dbh->do("UPDATE kunden SET passwort='$FM{passwort}' WHERE id='$_kunden_id'") ; } goto SHOWP } else { ¨eiten("$_scriptname?a=login&aa=profil") ; } } elsif ($FM{a} eq "profil") { SHOWP: if ($_kunden_id>0) { $tmpl = &loadtmpl2("shop/profil.html") ; my $l="\n" ; my $ll="\n" ; $data=$dbh->prepare("SELECT id,de FROM laender ORDER BY de") ; $data->execute() ; while(my($i,$n)=$data->fetchrow()) { $l.=qq~\n~ ; $ll.=qq~\n~ ; } $data->finish() ; $tmpl =~s/\[landliste\]/$l/ig ; $tmpl =~s/\[l_landliste\]/$ll/ig ; my $bl="" ; $data=$dbh->prepare("SELECT id,name FROM branchen ORDER BY name") ; $data->execute() ; while(my($i,$n)=$data->fetchrow()) { $bl.=qq~\n~ ; } $data->finish() ; $tmpl =~ s//$bl/gi ; $data=$dbh->prepare("SELECT *,id AS kunden_id FROM kunden WHERE id='$_kunden_id'") ; $data->execute() ; $set->{passwort}="" ; my $set=$data->fetchrow_hashref() ; $set->{passwort}='' ; $tmpl =~ s/\[ladresse\:1\]/checked/ if($set->{ladresse}==1) ; (my $nl)=&fetchdb("SELECT email FROM newsletter_kunden WHERE email LIKE '$set->{email}'") ; $set->{nl}=0 ; $set->{nl}=1 if($nl) ; foreach(keys(%{$set})) { $tmpl=~s/\[$_\]/$set->{$_}/ig ; $tmpl=~s/\[$_\:$set->{$_}\]/selected/ig if($_ eq 'anrede' || $_ eq 'land' || $_ eq 'l_anrede' || $_ eq 'l_land' || $_ eq 'nl' || $_ eq 'branche') ; $tmpl=~s/\[$_\:$set->{$_}\]/checked/ig if($_ eq 'zahlweise') ; } $data->finish() ; $tmpl =~s/\[menu\]/\%menu\%/ig ; $tmpl =~s/\[save]/GESPEICHERT\!

/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=""; while(my($i,$f,$n,$s,$p,$o,$t,$e)=$d->fetchrow) { $list.=qq~\n~; } if ($CO{sprache} eq 'en') { my $e_tmpl=qq~

Italien

Audio Azimuth
Via Caravaggio 209
65125 Pescara
Italy
Tel/fax: +39 (0)85 4718079
email: info\@audioazimuth.it
web: www.audioazimuth.it
online shop: www.playstereo.com

Ungarn

Penna-Poor LTD.
H-1025 Hungary
Budapest, Törökvész u. 95-97


Mobile/Viber +36 30 206 1700

China

The Opera Audio Co., Ltd
Add:798, No.2 Jiuxianqiao Road, Chaoyang District, Beijing, CHINA 100015
Tel: +86-10-59789461
Fax:+86-10-59789265
http://www.operaudio.com.cn

Hongkong

HK68
NO.1 , 27/F FOOK YIP BUILDING, NOS. 53-57 KWAI FUNG CRESCENT, KWAI CHUNG. N.T.,Hong Kong
TEL 852-34891533
HK68LP\@gmail.com
support\@hk-68.com

Slowenien

Kuzma d.o.o.
Hotemaze 17A
SI-4205 PREDDVOR
SLOVENIA
T: +386 4 25 35 450
www.katltd.si

Indonesia/ Singapore

Music Image Pte Ltd
The Adelphi
1 Coleman Street #03-02
Tel: 0065 97376003, 0065 96368838

Türkei/ Turky

Extreme Audio
Address:
Buyukdere Cad. Ucyol mevkii No:233 kat.B2
34398 Maslak/Istanbul/Turkey
Tel: 0090 444 3 760
Fax: 0090 212 285 00 73
e-mail: support\@extreme-audio.com
website: https://www.extreme-audio.com
Facebook: https://www.facebook.com/extremeaudioTR
Twitter : https://twitter.com/extremeaudioTR

Neuseeland/ New Zealand

Denco Audio Ltd
PO Box 2650,
Christchurch
New Zealand
Ph: +64 3 379 0743
E: info\@dencoaudio.co.nz

Dänemark, Norwegen, Schweden
Denmark, Norway, Sweden

High End Sound
Oesterbakken 3
9310 Vodskov
Denmark
Mr. Gert Lindgreen
Cell: +45 60 77 24 48

Japan

Yukimu Corporation
1-41-9 Ohi Shinagawa-Ku
Tokyo 140-0014 Japan
tel: +81-3-5743-6202
fax: +81-3-5743-0057
contact: support\@yukimu.com

Taiwan

Tech Union Incorporation
1F.,No.30/32,Lane 417
Xingshan Rd.,Neihu Dist
Taipei City 11469,Taiwan R.O.C.
Mobile : +886910069971
Tel: 02-2791-5009
Fax: 02-2791-080

Canada

Wynn Audio Corp
Unit 31 - 20 Wertheim Crt
Richmond Hill, ON, L4B3A8
info\@wynnaudio.com
Tel: +1 (647) 995-2995
www.wynnaudio.com

~; $tmpl=~s/.*/$e_tmpl/si; } $tmpl=~s/\[list\]/$list<\/table>/ig; $d->finish; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "klogin") { $tmpl = &loadtmpl2("shop/klogin.html") ; #$tmpl =~ s/.*.*//si ; $tmpl =~ s/\[email\]//ig ; $tmpl =~ s/\[aa\]/$FM{aa}/ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "optin") { my ($e,$uid)=&fetchdb("SELECT email,id FROM newsletter_kunden WHERE email LIKE '$FM{email}'") ; if ($e) { $tmpl = &loadtmpl("shop/optin_again.html") ; $tmpl =~ s/\[email\]/$FM{email}/ig ; $tmpl =~ s/\[uid\]/$uid/ig ; &print_tmpl($tmpl) ; exit(0) ; } my $uid = uc(pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97)).pack("C",(rand(26)+97))) ; $dbh->do("INSERT INTO newsletter_kunden (id,email,datum,optin,ip) VALUES ('$uid','$FM{email}',NOW(),'Webseite Optin','$ENV{REMOTE_ADDR}')") ; $tmpl = &loadtmpl("shop/optin.html") ; $tmpl =~ s/\[email\]/$FM{email}/ig ; $tmpl =~ s/\[uid\]/$uid/ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "optin2") { $dbh->do("UPDATE newsletter_kunden SET anrede='$FM{anrede}',vorname='$FM{vorname}',name='$FM{nachname}' WHERE id='$FM{uid}'") ; $tmpl = &loadtmpl("shop/optin_danke.html") ; $tmpl =~ s/\[nachname\]/$FM{nachname}/ig ; $tmpl =~ s/\[anrede\]/$FM{anrede}/ig ; $tmpl =~ s/\[email\]/$FM{email}/ig ; $tmpl =~ s/\[uid\]/$FM{uid}/ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "optout") { my ($e)=&fetchdb("SELECT email FROM newsletter_kunden WHERE id LIKE '$FM{uid}'") ; unless ($e) { $tmpl = &loadtmpl("shop/optout_nigef.html") ; $tmpl =~ s/\[email\]/$FM{email}/ig ; &print_tmpl($tmpl) ; exit(0) ; } $dbh->do("DELETE FROM newsletter_kunden WHERE id='$FM{uid}'") ; $tmpl = &loadtmpl("shop/optout.html") ; $tmpl =~ s/\[email\]/$e/ig ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "status") { if ($_kunden_id>0) { $tmpl = &loadtmpl2("shop/status.html") ; my $list1=qq~

$f

$s$p $o$t$e
 

[datum]

~ ; $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~
  1. $set->{datum} {os_order}
  2. ~ ; if ($set->{bdatum}) { $list.=qq~
  3. $set->{bdatum} {os_pay}
  4. ~ ; } else { $list.=qq~
  5. {not_payed}
  6. ~ ; } if ($set->{vdatum}) { $list.=qq~
  7. $set->{vdatum} {os_sent}
  8. ~ ; } $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~~ ; 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~~ ; $gp+=$preis*$anz ; $nr++ ; } $list.=qq~~ ; $list=~s/\.(\d\d\D)/\,$1/g ; $list=~s/\,00/\,-/g ; $list.="
{anzahl}{artikelnummer}{artikel}{preis}{summe}
$bnr $titel
$bez
€ $preis ~.sprintf("€ %.02f",$preis*$anz).qq~
~.sprintf("€ %.02f",$gp).qq~
" ; $list=qq~

{cookies}


~ unless($nr>0) ; $tmpl=~s/.*//si unless($nr>0) ; $tmpl=~s/\[list\]/$list/i ; $tmpl=~s/\[sdomain\]/$sdomain/i ; &print_tmpl($tmpl) ; } elsif ($FM{a} eq "delwk") { $dbh->do("UPDATE sid SET warenkorb='' WHERE sid='$_session_id'"); $_warenkorb=""; goto SHOWKORB; } elsif ($FM{a} eq "put") { #$FM{bnr}=~s/[\,\.]//g ; #$FM{id}=~s/[\,\.]//g ; my $korbneu="" ; #unless ($FM{vid}) { # ($best_id)=&fetchdb("SELECT id FROM artikel_var WHERE bestellnummer='$FM{bnr}'") ; #} else { $best_id=$FM{vid} ; #} ($sta)=&fetchdb("SELECT status FROM artikel,artikel_var WHERE artikel.id=artikel_var.artikel_id AND artikel_var.id='$best_id'") ; if($sta ne "online") { goto SHOWKORB; } #unless($best_id) { # goto SHOWKORB; #} my $a=0; $_warenkorb=~s/o\$//; foreach(split(/o/,$_warenkorb)) { ($id,$anz)=split(/x/,$_) ; if ($id==$best_id) { $anz+=$FM{anzahl}; $a++ ; } $korbneu.= $id."x".$anz."o" ; } if ($a==0) { $korbneu.=$best_id."x".$FM{anzahl}."o" ; } $_warenkorb=$korbneu; $dbh->do("UPDATE sid SET warenkorb='$korbneu' WHERE sid='$_session_id'"); if($FM{instant}>0) { ¨eiten("$_scriptname?a=kauf") ; exit; } else { goto SHOWKORB; } } elsif ($FM{a} eq "doptin") { $dbh->do("UPDATE newsletter_kunden SET doptin=NOW() WHERE id='$FM{'uuid'}'") ; $FM{msg}="

Vielen Dank,


die Newsletterzustellung wurde aktiviert!

Beste Grüße
Ihr Flux HiFi Team

"; goto INDEX; } elsif ($FM{a} eq "changenr") { my $korbneu="" ; $vid=$FM{vid} ; my @wk=split(/o/,$_warenkorb) ; if ($FM{anz}>0) { foreach(@wk) { if ($_ =~ m/(\d*)x(\d*)/i) { my $id=$1 ; my $anz=$2 ; if ($id==$vid) { $anz=$FM{anz} } $korbneu.= $id."x".$anz."o" ; } } } else { foreach(@wk) { $_ =~ m/(\d*)x(\d*)/i ; my $id=$1 ; my $anz=$2 ; $korbneu.= $id."x".$anz."o" unless ($id==$vid) ; } } $dbh->do("UPDATE sid SET warenkorb='$korbneu' WHERE sid='$_session_id'"); ¨eiten("$_scriptname?a=showkorb") ; } else { #xxx INDEX: $tmpl=&loadfile($tmpldir."/shop/_master.html") ; if($FM{msg}) { $tmpl=~s//SqueezeBox.open(\$('message'), {handler: 'adopt',size: {x: 300, y: 200}});/ig; $tmpl=~s//$FM{msg}/ig; } if($FM{f} eq "news.html") { $tmplc=&mk_news($FM{id}) ; } elsif($FM{f} eq "index.html" || $FM{f} eq "") { &setCookie("kat",undef); $tmplc=&loadfile2($tmpldir."/shop/index.html") ; if(int(rand(2))==1) { $tmplc=~s/\[ab\]/a/ig; } else { $tmplc=~s/\[ab\]/b/ig; } my ($t)=&fetchdb("SELECT txt FROM feedback WHERE 1 ORDER BY RAND() LIMIT 1") ; $t=~s/\n//g ; $t=substr($t,0,300)."..." if(length($t)>300) ; $tmplc=~s/\[feedback\]/»$t«/ig; } elsif($FM{f} eq "kontakt.html") { $tmplc=&loadfile2($tmpldir."/shop/".$FM{f}) ; $tmplc=~s/{sub}/$FM{s}/ig; } elsif($FM{f} eq "tradein.html") { $tmplc=&loadfile2($tmpldir."/shop/tradein.html") ; my $pl=""; my $lk=""; my $d=$dbh->prepare(" SELECT k.artikel_id, at.titel, kt.titel FROM artikel_kat k LEFT JOIN artikel a ON a.id=k.artikel_id LEFT JOIN artikel_text at ON at.artikel_id=a.id LEFT JOIN kategorie_text kt ON kt.kategorie_id=k.kategorie_id LEFT JOIN kategorie kat ON kat.id=k.kategorie_id WHERE a.status='online' AND kat.parent_id='289' ORDER BY kat.sortier,at.titel") or die $DBI::errstr ; $d->execute ; while(my($i,$titel,$kt)=$d->fetchrow) { $pl.="" if($lt ne $kt ); $s=""; $s="selected" if($i=="$FM{id}"); $pl.=qq~\n~; $lt=$kt; } $tmplc=~s/\[plist\]/$pl/ig; } elsif($FM{f} eq "haendler.html") { goto Haendler; } elsif($FM{f} eq "tests.html") { $tmplc=&loadfile2($tmpldir."/shop/tests.html") ; my $d=$dbh->prepare(" SELECT a.id,t.titel,t.kurztext FROM artikel_text t LEFT JOIN artikel a ON a.id=t.artikel_id WHERE a.status='online' AND t.sprache='de' AND LENGTH(t.kurztext)>30 ORDER BY a.score") or die $DBI::errstr ; $d->execute ; my $list=""; while(my($i,$t,$k)=$d->fetchrow) { #$k=~ s/(.*\.pdf)/Test lesen<\/a>/ig ; $k=~ s/(http\:\/\/[a-z0-9\~\/\.\?\&\-\%\ \_ä\+üö]*)/Test lesen<\/a>/ig ; $k=~s/\n/
/g; $list.=qq~

$t


$k

\n~; } $tmplc=~s/\[list\]/$list/ig; } else { &setCookie("kat",undef); if($FM{f}) { $tmplc=&loadfile2($tmpldir."/shop/".$FM{f}) ; } else { $tmplc=&loadfile2($tmpldir."/shop/index.html") ; } unless($tmplc) { $tmplc=&loadfile2($tmpldir."/shop/index.html") ; } } $tmpl=~s/\[titel\]/Röhrenverstärker/ig; $tmpl=~s/{x}/$tmplc/ ; $tmpl=&wk($tmpl); &print_tmpl($tmpl) ; } FERTIG: $dbh->disconnect() ; ###################################################################################################################################### ###################################################################################################################################### sub rek { my $id=shift() ; my $dc=$dbh->prepare("SELECT id,titel,parent_id FROM kategorie WHERE parent_id=$id ORDER BY titel"); my @kats=() ; $dc->execute() ; while(my ($i,$t,$p)=$dc->fetchrow()) { ($z)=&fetchdb("SELECT COUNT(id) FROM kategorie WHERE parent_id=$i") ; unless($z>0) { ($y)=&fetchdb("SELECT COUNT(id) FROM artikel WHERE kat_id=$i") ; $katlist.= qq~\n~ if($y>0) ; push(@kats,$i) ; } &rek($i) ; $idlist.="$i," } $dc->finish() ; return(@kats) ; } sub artikel_liste { my ($hot,$bid,$zw,$land)=@_ ; my $list="" ; my $smailc="your order:\n\n" ; my $artikelids="" ; my $list=qq~~ ; my $nr=0 ; my $gp=0 ; my $gnetto=0 ; my $provi=0 ; foreach(split(/o/,$_warenkorb)) { $_ =~ m/(\d*)x(\d*)/i ; my $id=$1 ; my $anz=$2 ; my ($bnr,$titel,$vn,$vn2,$vn3,$v,$v2,$v3)=&fetchdb(" SELECT v.bestellnummer, at.titel, at.var_name, at.var_name2, at.var_name3, vt.var, vt.var2, vt.var3 FROM artikel_var v INNER JOIN artikel a ON a.id=v.artikel_id INNER JOIN artikel_text at ON at.artikel_id=a.id INNER JOIN artikel_var_text vt ON vt.artikel_var_id=v.id WHERE v.id='$id' AND at.sprache='$CO{sprache}' AND vt.sprache='$CO{sprache}' LIMIT 1 ") ; my ($preis,$vid,$aid,$mwst)=&getprice($id,$anz,$_kunden_id); my $bez="" ; $bez="$vn: $v" if($vn) ; $bez.=", $vn2: $v2" if($vn2) ; $bez.=", $vn3: $v3" if($vn3) ; $list.=qq~~ ; $list.=qq~~ ; $list.=qq~~ ; $list.=qq~~ ; $list.=qq~~ ; $list.=qq~~ ; $nr++ ; $gp+=$preis*$anz ; $gnetto+=($preis*$anz)/(($mwst/100)+1) ; if($hot) { $dbh->do("INSERT INTO posten (bestellungen_id,artikel_id,artikel_var_id,bestellnummer,anzahl,preis,datum,umst) VALUES ('$bid','$aid','$vid','$bnr','$anz','$preis',NOW(),'$mwst')") ; } $artikelids.=$aid ; } $list.=qq~~; $list.=qq~~ ; ($portokosten)=&fetchdb("SELECT porto FROM laender WHERE id='$land'"); $list.=qq~~; $gp+=$portokosten ; $gnetto+=$portokosten/(($mwst/100)+1) ; $dbh->do("INSERT INTO posten (bestellungen_id,artikel_id,artikel_var_id,bestellnummer,anzahl,preis,datum) VALUES ('$bid','3','5','porto','1','$portokosten',NOW())") if($hot) ; my $umst=$gp-$gnetto; if($land == 20) { $gp=$gnetto; $umst=0; } my $wert=$gp ; $list.=qq~~ ; $list.=qq~~ ; $list.="
Anz. Art.Nr. {artikel} {vat} {preis} {summe}
$anz$bnr$titel - $bez$mwst\%€ $preis~.sprintf("€ %.02f",$preis*$anz).qq~
Gesamtpreis der Ware~.sprintf("€ %.02f",$gp).qq~
Versandkosten~.sprintf("€ %.02f",$portokosten).qq~
{vat}~.sprintf("€ %.02f",$umst).qq~
zu zahlender Gesamtpreis~.sprintf("€ %.02f",$gp).qq~
" ; $list=qq~

{cookie}


~ unless($nr>0) ; $list=~s/\.(\d\d\D)/\,$1/g ; return($list,$smailc,$provi) ; }