#!/usr/bin/perl ####################################################################################### # # promatic # # (c)2004 by Abacus, info@abacus.hr, dejan@abacus.hr # ####################################################################################### use lib 'tajna'; use DBI; use lib 'Imager'; use lib 'Image'; use Image::Size; #use Imager; require Utility; require Utility2; $ABSPATH='/var/www/vhosts/abacus7.c-a.com.hr/promatic.hr/'; $DBH = DBI->connect('DBI:mysql:inova82427:localhost','inova82427','hDvn1s9G'); $DBH->do("set NAMES 'cp1250'"); ProcessInput(); GetCookie(); DateTime(); ($IP,$HOSTNAME)=&HostInfo; print "Content-type: text/html\n\n"; $Q{P} ||= 'index'; $Q{L} ||= 'h'; JeziciInit(); #visejezicnost # OnMouse(PrintHtml("$Q{P}.tl")); PrintHtml("$Q{P}.tl"); sub MainLoop { ############################################################### # # glavna petlja # ############################################################### my ($rest, $tag) = @_; $rest =~ s/\$(\w+){(\w+)}/$1->{$2}/g; print $rest; if (!$Q{GRUPA} and !$Q{trazi}) { $Q{GRUPA}='G10' } if (!$Q{IDP}) { $Q{IDP}='001' } if (!$tag) { return } elsif ($tag eq 'BODY') { if ($Q{'A'} eq 'UPT') { &Upit } elsif ($Q{'A'} eq 'PLF') { &PosaljiLinkForma } elsif ($Q{'A'} eq 'HTM') { &PrintHtml("$Q{L}$Q{HTM}.html"); } if ($Q{A} eq 'PRO') { #if (!$Q{IDP}) { &IspisProizvod } &DetaljProizvod; } elsif ($Q{A} eq 'PROS') { &SearchIspis; } else { if (!$Q{HTM} and (!$Q{'A'})) { &PrintHtml("naslovna.html"); } } } elsif ($tag eq 'SEARCH') { my($form); { local $/; open(HTM, "$ABSPATH/forme/search.htm"); $form=; close(HTM); } ParseForm(\$_) for $form; print $form; } elsif ($tag eq 'MENU') { if ($Q{A} eq 'PRO') { &IspisMeni; } else { if ($Q{HTM}) { print qq{
  $J{"$Q{HTM}"}  
}; #&RndSlike(); } elsif ($Q{A}) { print qq{
  $J{"$Q{A}"}  
}; } else { print qq{
  Home  
}; #&RndSlike(); } } } elsif ($tag=~/F=(\w+)/) { &IspisTemplate($1); } } sub RndSlike { ############################################################### # # ispis random slika # ############################################################### my $CMD="select $Q{L}NASLOV,IDP from PRO_PROIZVODI where STATUS=1 order by rand()"; my $Q=$DBH->prepare($CMD); my $NROWS=$Q->execute; my($naslov,$idp) = $Q->fetchrow_array; my $slika; my $pathslika="slike/$idp-v-1.jpg"; if (-f "$ABSPATH/$pathslika") { my($w,$h)=Image::Size::imgsize("$ABSPATH/$pathslika"); $w=int($w/2); $h=int($h/2); $slika=qq{$naslov}; } else { $slika='' } print OnMouse(qq{
$slika
}); } sub SearchIspis { ############################################################### # # ispis rezultata pretrazivanja # ############################################################### my($form); { local $/; open(HTM, "$ABSPATH/forme/$Q{L}search.htm"); $form=; close(HTM); } ParseForm(\$_) for $form; print qq{
$form
}; if ($Q{trazi}) { my @proizvodi=GetProizvod($Q{GRUPA},$Q{trazi}); #stranice $Q{od} ||= 0; $Q{perp} = 5; $Q{class} = F8; $Q{max} = $#proizvodi; $Q{strana} = 1 + int $Q{od}/$Q{perp}; my $stranice = MakePages(od => $Q{od}, max => $Q{max}, class => $Q{class}, perp =>$Q{perp}, param => "trazi=$Q{trazi}&GRUPA=$Q{GRUPA}"); $Q{do} = $Q{od}+$Q{perp}-1; $Q{do} = $Q{max} if $Q{do} > $Q{max}; for $pro(@proizvodi[ $Q{od}..$Q{do} ]) { $pro->{"$Q{L}OPIS"}=~s/\r?\n/
/gi; $pro->{"$Q{L}OPIS"}=~s/^(.{200,250})\s.*$/$1.../; if ($Q{trazi}) { for ($pro->{"$Q{L}OPIS"}, $pro->{"$Q{L}NASLOV"}) { s!($regexp)!$1!gi } } $link=qq{}; $ispis.=qq{
$pro->{"$Q{L}NASLOV"}

$pro->{"$Q{L}OPIS"}

$link $J{'više'} >>


}; } if (!@proizvodi) { $ispis="
$J{'Nije pronađen niti jedan proizvod!'}

" }; print qq{
$ispis
}; } } sub IspisTemplate { ############################################################### # # ispis # ############################################################### local *DAT; my ($tag) = @_; my ($red,$pro,$ispis,$tmpPG); open(DAT, "$ABSPATH/$Q{L}$tag"); while ($red=) { my $replace; if ($Q{HTM}) { $replace=$Q{HTM} } elsif ($Q{A}){ $replace=$Q{A} } if ($red=~//) { my $uri=$ENV{REQUEST_URI}; if ($uri eq '/') { $uri='?' } print OnMouse(qq{
print }); } $red=~s///gi; print OnMouse($red); } close(DAT); } sub IspisMeni { ############################################################### # # ispis menija # ############################################################### my($pro,$B,$ispis); my @grupa=GetProizvod($Q{GRUPA}); my $gore=qq{
  $J{'Proizvodi'}  
}; for $pro(@grupa) { if ($pro->{IDP} eq $Q{IDP}) { $B=' bgcolor="#DEAD84"' } else { $B='' } $ispis.=OnMouse(qq{
$pro->{"$Q{L}NASLOV"}
}) } print qq{ $gore $ispis } } sub DetaljProizvod { ############################################################### # # ispis detalja proizvoda # ############################################################### my($ispis,$slika,$pakiranje,$pro,$proizvod); my @proizvodi=GetProizvod($Q{GRUPA},'',$Q{IDP}); $uri = SimpleEncode("http://$ENV{SERVER_NAME}$ENV{REQUEST_URI}"); for $pro(@proizvodi) { if (-e "$ABSPATH/slike/$pro->{IDP}-v-1.jpg") { my($x,$y)=Image::Size::imgsize("$ABSPATH/slike/$pro->{IDP}-v-1.jpg"); $slika=qq{}; } else { $slika=''; } $pro->{"$Q{L}OPIS"}=~s/\r?\n/
/gi; my %cij=('h','kn','e','EUR'); if ($pro->{"$Q{L}CIJENA"}+0) { $pro->{"$Q{L}CIJENA"}=EUR($pro->{"$Q{L}CIJENA"}); $cijena=qq{
$pro->{"$Q{L}CIJENA"} $cij{$Q{L}}}; } $ispis.=qq{
$slika$cijena

$pro->{"$Q{L}NASLOV"}

$pro->{"$Q{L}OPIS"}

}; } my ($ispistehdok,$ispisprog); my @tehdok=GetTehDok($Q{IDP}); for $teh(@tehdok) { my $what="$teh->{FILE}"; if (-e "$ABSPATH/docs/$Q{L}/$what") { my $link=qq{{ID}>}; my($info) = int((-s "$ABSPATH/docs/$Q{L}/$what")/1024) .'Kb'; if ($what=~/.pdf/) { $ispistehdok.=qq{ $link $link$teh->{IME} ($info) }; } else { $ispisprog.=qq{ $link $link$teh->{IME} ($info) }; } } } if ($ispisprog) { $ispisprog=qq{ $J{'Pomoćni programi'}
$ispisprog

}; } my($grupa); my @grupa=GetGrupa($Q{GRUPA}); for (@grupa) { $grupa=$_->{GRUPA} } print qq{
$ispis

}; if (-f "$ABSPATH/html/$Q{L}$Q{IDP}.htm") { &PrintHtml("html/$Q{L}$Q{IDP}.htm"); print '
'; } print OnMouse(qq{
$ispisprog $J{'Dokumentacija'}
$ispistehdok
}); } sub IspisProizvod { ############################################################### # # ispis proizvoda # ############################################################### my($ispis,$slika,$pakiranje,$pro,$link); my @proizvodi=GetProizvod($Q{GRUPA},$Q{trazi}); #stranice $Q{od} ||= 0; $Q{perp} = 5; $Q{class} = F8; $Q{max} = $#proizvodi; $Q{strana} = 1 + int $Q{od}/$Q{perp}; my $stranice = MakePages(od => $Q{od}, max => $Q{max}, class => $Q{class}, perp =>$Q{perp}, param => "trazi=$Q{trazi}&GRUPA=$Q{GRUPA}"); $Q{do} = $Q{od}+$Q{perp}-1; $Q{do} = $Q{max} if $Q{do} > $Q{max}; # for $pro(@proizvodi) { for $pro(@proizvodi[ $Q{od}..$Q{do} ]) { $pro->{OPIS}=~s/\r?\n/
/gi; $pro->{OPIS}=~s/^(.{200,250})\s.*$/$1.../; if ($Q{trazi}) { for ($pro->{"$Q{L}OPIS"}, $pro->{"$Q{L}NASLOV"}) { s!($regexp)!$1!gi } } $link=qq{}; if (-e "$ABSPATH/slike/$pro->{IDP}-m-1.jpg") { my($x,$y)=Image::Size::imgsize("$ABSPATH/slike/$pro->{IDP}-m-1.jpg"); $slika=qq{$link}; } else { $slika=''; } $ispis.=qq{ $slika
$pro->{PROIZVOD}
$pro->{NASLOV}

$pro->{OPIS}

$link više >>


}; } if (!@proizvodi) { $ispis="Nije pronađen niti jedan proizvod!
" }; my($grupa); if (!$Q{trazi}) { my @grupa=GetGrupa($Q{GRUPA}); for (@grupa) { $grupa=$_->{GRUPA} } } else { $grupa='REZULTATI PRETRAŽIVANJA' } print qq{
$grupa
stranice: $stranice

$ispis }; } sub PosaljiLinkForma { ############################################################# # # forma za "posalji link" i slanje na mail # ############################################################# local *DAT,*SIF; $uri = SimpleDecode($Q{UR}); $REFERER='http://www.promatic.hr/'; my @proizvodi=GetProizvod($Q{GRUPA},'',$Q{IDP}); my($pro); for $pro(@proizvodi) { $OPISi=$pro->{"$Q{L}NASLOV"}; } print "
Hostname: $HOSTNAME
IP: $IP


\n"; if ($ENV{HTTP_REFERER} !~ /^$REFERER/) { return } # elsif ($HOSTNAME !~ /hr$/i and $IP !~ /^192.168.0/) { # print qq{ # Štovani, dolazite s adrese koja nije registrirana u Hrvatskoj, i na žalost ne možete poslati link.

# Nastavak .. # }; # } elsif ($Q{PRIMA}) { $uri =~ s/www\.//; $uri =~ s/index.cgi//; $from = $Q{SALJE}; $to = $Q{PRIMA}; #$cc = 'test'; $bcc = 'zz@abacus.hr'; $subject = "promatic.hr: Obavijest od $Q{SALJEI}"; $body = qq{ Ovu poruku Vam je uputio $Q{SALJEI} ($Q{SALJE}) Poruka je poslana s Internet adrese: [$IP] $HOSTNAME $Q{SALJEI} Vam predlaže da pogledate slijedeću stranicu: $OPISi $uri Pozdrav, promatic.hr P.S. U slučaju zloupotrebe molimo Vas da prosljedite ovu E-mail poruku na adresu abuse\@promatic.hr }; &SendMail($from, $to, $cc, $bcc, $subject, $body); print qq{

Poslali ste obavijest o linku na $Q{PRIMA}

$J{'Nastavak'} .. } } else { my $form; { local $/; open(HTM, "$ABSPATH/forme/$Q{L}link.htm"); $form=; close(HTM); } ParseForm(\$_) for $form; print qq{
$J{'Slanje linka'}: "$OPISi"
$form }; } } sub Upit{ ########################################################################### # # Forma za upit # ########################################################################### local *DAT,*SIF; $uri = SimpleDecode($Q{UR}); $REFERER='http://www.promatic.hr/'; my($form); my @proizvodi=GetProizvod($Q{GRUPA},'',$Q{IDP}); for $pro(@proizvodi) { $OPISi=$pro->{"$Q{L}NASLOV"}; } if ($Q{UPIT}) { if (!$Q{PROHT}) { return } elsif (!$Q{IMEP}) { return } elsif ($Q{'MAIL'}!~/^[0-9a-zA-Z\.\_\-]+@[0-9a-zA-Z\.\_\-]+\.[0-9a-zA-Z\.\_\-]+$/) { return } elsif (!$Q{TEL}) { return } elsif (!$Q{ADR}) { return } else { $from = "$Q{'MAIL'}"; $to = 'info@promatic.hr'; #$to = 'zz@abacus.hr'; #$cc='test'; $bcc='zz@abacus.hr'; $subject='promatic.hr upit'; $body=qq{ Ime : $Q{IMEP} E-mail : $Q{MAIL} Tel. : $Q{TEL} Adresa : $Q{ADR} Upit o artiklu $OPISi $Q{PROHT} }; &SendMail($from, $to, $cc, $bcc, $subject, $body); print qq{

$J{'Hvala što ste poslali upit!'}
$J{'Javiti ćemo Vam se u najkraćem mogućem roku!'}

$J{'Nastavak'} >>

}; return; } } $ERROR = "
$ERROR!

" if $ERROR; { local $/; open(HTM, "$ABSPATH/forme/$Q{L}upit.htm"); $form=; close(HTM); } $Q{'UPIT'}='Y'; ParseForm(\$_) for $form; print qq{
$J{'Upit'}: "$OPISi"
$ERROR
$form }; } sub GetProizvod { ############################################################### # # pokupi odredjene proizvode po grupi # ############################################################### my ($grupa,$search,$idp) = @_; my($uvjet); my @polja = ('IDP',"$Q{L}OPIS","$Q{L}NASLOV",'IDG',"$Q{L}CIJENA"); my $polja = join ',', map "$_", @polja; if ($search) { if ($Q{trazi}) { if (length($Q{trazi}) >= 2) { ($cond, $regexp) = BuildSearch($Q{trazi}, @polja); $uvjet= "$cond " if $cond; } else { $err = 'Kod pretraživanje morate unjeti najmanje dva slova!' } } } else { if ($idp) { $uvjet="IDP='$idp'" } else { $uvjet="IDG='$grupa'" } } my $CMD="select $polja from PRO_PROIZVODI where $uvjet AND STATUS=1"; my $Q=$DBH->prepare($CMD); my $NROWS=$Q->execute; my (%cj, @ret); while (@cj{@polja} = $Q->fetchrow_array) { push @ret, { %cj }; } return @ret; } sub GetGrupa { ############################################################### # # vrati ime grupe # ############################################################### my ($grupa) = @_; my($uvjet); if ($grupa) { $uvjet="where IDG='$grupa'" } else { $uvjet='' } my @polja = ('IDG',"$Q{L}GRUPA"); my $polja = join ',', map "$_", @polja; my $CMD="select $polja from PRO_GRUPA $uvjet"; my $Q=$DBH->prepare($CMD); my $NROWS=$Q->execute; my (%cj, @ret); while (@cj{@polja} = $Q->fetchrow_array) { push @ret, { %cj }; } return @ret; } sub GetTehDok { ############################################################### # # vrati podatke o tehnickoj dokumentaciji (naziv fajla i slicno) # ############################################################### my ($sifra) = @_; my($uvjet); if ($sifra) { $uvjet="where IDP='$sifra' and LANG='$Q{L}'" } else { $uvjet='' } my @polja = ('ID','IDP','LANG','IME','FILE'); my $polja = join ',', map "$_", @polja; my $CMD="select $polja from PRO_TEHDOK $uvjet"; my $Q=$DBH->prepare($CMD); my $NROWS=$Q->execute; my (%cj, @ret); while (@cj{@polja} = $Q->fetchrow_array) { push @ret, { %cj }; } return @ret; } sub JeziciInit { ####################################################### # # inicijalizacija za visejezicnost # ####################################################### if ($Q{'L'} eq 'h') { %J=( 'Proizvodi', 'Proizvodi', 'pošalji upit', 'pošalji upit', 'pošalji link', 'pošalji link', 'Hvala što ste poslali upit!','Hvala što ste poslali upit!', 'Javiti ćemo Vam se u najkraćem mogućem roku!','Javiti ćemo Vam se u najkraćem mogućem roku!', 'Nastavak','Nastavak', 'Pomoćni programi','Pomoćni programi', 'Upit','Upit', 'Slanje linka','Slanje linka', 'Ime i prezime','Ime i prezime', 'Šalje','Šalje', 'Prima','Prima', 'Pošalji!','Pošalji!', 'više','više', 'onama','O nama', 'PROS','Traži', 'Nije pronađen niti jedan proizvod!','Nije pronađen niti jedan proizvod!', 'Dokumentacija','Dokumentacija' ) } else { %J=( 'Proizvodi', 'Products', 'pošalji upit', 'send query', 'pošalji link', 'send link', 'Hvala što ste poslali upit!','Thank You!', 'Javiti ćemo Vam se u najkraćem mogućem roku!','We will contact you soon as possible!', 'Nastavak','Continue', 'Pomoćni programi','Utilities', 'Upit','Query', 'Slanje linka','Send link', 'Ime i prezime','Name', 'Šalje','From', 'Prima','To', 'Pošalji!','Send!', 'više','more', 'onama','About Us', 'PROS','Search', 'Nije pronađen niti jedan proizvod!','No results!', 'Dokumentacija','Documentation' ) } }