#!/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{
};
#&RndSlike();
}
elsif ($Q{A}) {
print qq{
};
}
else {
print qq{
};
#&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{
};
}
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{
};
}
}
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{
 |
});
}
$red=~s///gi;
print OnMouse($red);
}
close(DAT);
}
sub IspisMeni {
###############################################################
#
# ispis menija
#
###############################################################
my($pro,$B,$ispis);
my @grupa=GetProizvod($Q{GRUPA});
my $gore=qq{
};
for $pro(@grupa) {
if ($pro->{IDP} eq $Q{IDP}) { $B=' bgcolor="#DEAD84"' }
else { $B='' }
$ispis.=OnMouse(qq{
})
}
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}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'}
};
}
my($grupa);
my @grupa=GetGrupa($Q{GRUPA});
for (@grupa) { $grupa=$_->{GRUPA} }
print qq{
};
if (-f "$ABSPATH/html/$Q{L}$Q{IDP}.htm") {
&PrintHtml("html/$Q{L}$Q{IDP}.htm");
print '
';
}
print OnMouse(qq{
$ispisprog
$J{'Dokumentacija'}
});
}
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->{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'
)
}
}