[an error occurred while processing this directive]
#!/usr/bin/perl -w
####################################################
# Tree-type pages v.3.0-multilingual / 03.11.2004
# Developimg and programming by Alex Melar Web Group
# http://www.melar.ru/
####################################################
use strict;
use CGI;
use DBI;
use lib 'lib';
use HTML::Template;
use TreePagesML;
use MylibML;
use vars qw($q $dbh $t $error %CFGVAR);
my ($sended);
$q = new CGI;
$t = HTML::Template->new(filename => MylibML::get_tmpl($ENV{SCRIPT_NAME}), associate => $q,die_on_bad_params=>0);
$dbh = MylibML::dbi_connect(); # MySQL connecting
%CFGVAR=%{MylibML::PageSupport($dbh,$q,$t)};
$t->param(thisurl=>$ENV{HTTP_HOST}.$ENV{REQUEST_URI});
#$t->param(needprint=>1);
#-------------------------------
# оформление и обслуживание
#-------------------------------
$CFGVAR{var_path}='1' if !$CFGVAR{var_path};
if ($CFGVAR{var_path}) {
# Main menu item selecting
my $parent=(split(/\,/,$CFGVAR{var_path}))[0];
$t->param('iam_'.$parent=>'white');
ShowShopList() if $parent eq $CFGVAR{cfg_shoplistpageid};
FAQList() if $parent eq $CFGVAR{cfg_faqpageid};
$t->param(itemdescribe=>1) if $parent eq $CFGVAR{cfg_itemdescribepageid};
}
my $headimagenum=1;
my $leftheadimg='';
if ($CFGVAR{var_path}) {
# Main menu item selecting
my @pth=split(/\,/,$CFGVAR{var_path});
for (my $i=@pth;$i>0;$i--) {
if (-e $ENV{DOCUMENT_ROOT}.'/images/design/head1_r'.$pth[$i].'a.jpg') {
$headimagenum=$pth[$i];
$leftheadimg='1a';
last;
}
}
my $pagenamepic = (-e $ENV{DOCUMENT_ROOT}.'/userfiles/image/_pagename/pagename'.$pth[scalar(@pth)-1].'.gif')?'/userfiles/image/_pagename/pagename'.$pth[scalar(@pth)-1].'.gif':'';
$t->param(headimagenum=>$headimagenum);
$t->param(leftheadimg=>$leftheadimg);
$t->param(pagenamepic=>$pagenamepic);
}
#-------------------------------
# вывод дерева
#-------------------------------
my ($tree,$treepath,@excludepage);
my $step=$q->param('step') || '';
if ($step eq 'print') {$t->param(printversion=>1);}
@excludepage = (1);
($tree,$treepath)=TreePagesML::show_tree($dbh,$CFGVAR{var_path},$CFGVAR{var_lang},"step=$step&",'','');
$t->param(tree=>$tree);
$t->param(treepath=>$treepath);
GetLastUpdate();
# начало тела страницы
list();
# окончание тела страницы
$dbh->disconnect();
$t->param(error=>$error);
print $q->header(-type => 'text/html; charset=windows-1251');
print $t->output();
sub list {
my ($group_id,$treename,$descr);
my (@loop_data,$hr,$sth);
$t->param(list=>1);
my @gp=split(/,/,$CFGVAR{var_path});
$group_id = $gp[scalar(@gp)-1] || '';
foreach my $key (@excludepage){
if ($key eq $group_id){
$t->param(showpagename=>'1');
}
}
ShowImgFiles($group_id,$group_id) if $group_id;
if ($group_id eq '1') {
$t->param(ismainpage=>1);
ShowDayFraza();
}
if (-e $ENV{DOCUMENT_ROOT}."/files/teasy/$group_id.gif") {
$t->param(pdffile=>$group_id);
my $pdfsize = -s $ENV{DOCUMENT_ROOT}."/files/teasy/$group_id.gif";
$t->param(pdfsize=>sprintf("%d",$pdfsize/1024));
}
($treename,$descr)=$dbh->selectrow_array("SELECT treename,descr FROM tree_tab$CFGVAR{var_lang} WHERE treeid='$group_id'");
if ($treename) {
$t->param(pagename=>$treename);
$t->param(descr=>$descr);
} else {
$t->param(pagename=>"xxx".$CFGVAR{cfg_nopage});
}
$sth=$dbh->prepare("SELECT treeid,treename FROM tree_tab$CFGVAR{var_lang} WHERE pntid='$group_id' AND show4menu='1'");
$sth->execute();
while ($hr=$sth->fetchrow_hashref('NAME_lc')) {
$$hr{pagepath}=$CFGVAR{var_path}.','.$$hr{treeid};
push @loop_data,$hr;
}
$sth->finish();
$t->param(HIDDEN_PAGES=>\@loop_data);
@loop_data=();
$sth=$dbh->prepare("SELECT * FROM advert_tab WHERE page='$group_id' OR page='0' ORDER BY page ASC");
$sth->execute();
while ($hr=$sth->fetchrow_hashref('NAME_lc')) {
if (-e "$ENV{DOCUMENT_ROOT}/images/banimg/$$hr{id}.jpg") {$$hr{advertimg}="$$hr{id}.jpg";}
elsif (-e "$ENV{DOCUMENT_ROOT}/images/banimg/$$hr{id}.gif") {$$hr{advertimg}="$$hr{id}.gif";}
push @loop_data,$hr;
}
$sth->finish();
$t->param(ADVERT_LOOP=>\@loop_data);
}
sub ShowDayFraza {
my ($count,$i);
($count)=$dbh->selectrow_array("SELECT count(id) FROM fraza_tab");
$i=int(rand($count))+1;
my ($fraza_author,$fraza_content)=$dbh->selectrow_array("SELECT title,content FROM fraza_tab WHERE id='$i'");
$t->param('fraza_author'=>$fraza_author );
$t->param('fraza_content'=>$fraza_content);
}
sub ShowImgFiles {
my ($id,$ShowId)=@_;
my (@files,$result,$imgone);
my $ImgPath=$ENV{DOCUMENT_ROOT}."/files/pageimg";
my $imagefile=0;
my $ShowOneFile='';#=$q->param('showonefile') || '';
if (opendir(DIR,"$ImgPath/$id")) {
my @dirs = readdir DIR;
for (grep { /^[^\.]/ && -f "$ImgPath/$id/$_" } @dirs){
$imagefile=1;
my $fl=$_;
$ShowOneFile=$fl if !$ShowOneFile;
push @files,"$id/$fl";
if (!$ShowId) {last}
if ($ShowOneFile eq "$fl") {
$imgone="$id/$fl";
$t->param('showimg_one'=>$imgone);
} else {$imgone='*'};
}
closedir(DIR);
}
push @files,'noimage.gif' if !@files;
if (!$ShowId) {$result=$files[0]}
else {
my $i=0;
foreach (@files) {
$i++;
$result.=" $i ";
}
}
$t->param(imgfiles=>$result);
$t->param(pagename=>$id);
$t->param(id=>$id);
$t->param(imagefile=>$imagefile);
}
# показывает список магазинов
sub ShowShopList {
$t->param(needshoplist=>1);
my $regid=$q->param('regid') || 2;
my $raion=$q->param('raion') || '';
#показываем список регионов
my $sth=$dbh->prepare("SELECT * FROM shopregion_tab ORDER BY name ASC");
$sth->execute();
my $regionoption='';
while (my $hr = $sth->fetchrow_hashref()) {
$regionoption.="\n";
}
$sth->finish();
$t->param(regionoption=>$regionoption);
#показываем список районов
$sth=$dbh->prepare("SELECT distinct(raion) FROM shoppoint_tab WHERE regionid='$regid' ORDER BY raion ASC");
$sth->execute();
my $raionoption='';
while (my $hr = $sth->fetchrow_hashref()) {
$raion=$$hr{raion} if !$raion;
$raionoption.="\n";
}
$sth->finish();
$t->param(raionoption=>$raionoption);
#показываем список магазинов
$sth=$dbh->prepare("select * FROM shoppoint_tab WHERE regionid='$regid' AND raion='$raion' ORDER BY adress ASC");
$sth->execute();
my @loop_data = (); # initialize an array to hold your loop
while (my $hr=$sth->fetchrow_hashref()) {
push @loop_data, $hr;
};
$sth->finish();
$t->param(SHOPS_LOOP=> \@loop_data);
}
sub FAQList {
$t->param(needfaqlist=>1);
#показываем ответы, готовим вопросы
my $sth=$dbh->prepare("select * FROM faq_tab ORDER BY id ASC");
$sth->execute();
my @loop_data = (); # initialize an array to hold your loop
my $num=0;
my $QuestionList='';
while (my $hr=$sth->fetchrow_hashref()) {
$num++;
$$hr{num}=$num;
$QuestionList.="$$hr{num}. $$hr{question} \n";
$$hr{answer}=~s/\n/ \n/g;
push @loop_data, $hr;
};
$sth->finish();
$t->param(FAQ_LOOP=> \@loop_data);
$t->param(questionlist=>$QuestionList);
}
sub GetLastUpdate {
my $HowDays=30; #срок актуальности для вывода на экран
my $sth;
my @loop_data;
$sth=$dbh->prepare("SELECT treeid, treename, stampupdate FROM tree_tab WHERE stampupdate>date_add(NOW(),INTERVAL -1 MONTH) ORDER BY stampupdate DESC");
$sth->execute();
my $lastupdate='';
while (my $hr=$sth->fetchrow_hashref('NAME_lc')) {
$lastupdate=$$hr{stampupdate} if !$lastupdate;
$$hr{path}=MylibML::GetFullPathById($dbh,$$hr{treeid});
$$hr{stampupdate}=MylibML::daterus($$hr{stampupdate});
$$hr{what}='page';
$$hr{razdel}=(split(/\,/,$$hr{path}))[0];
if ($$hr{razdel} ne $$hr{path}) {
($$hr{razdeltext})=$dbh->selectrow_array("SELECT treename FROM tree_tab WHERE treeid='$$hr{razdel}'");
}
$$hr{where}='path='.$$hr{path};
push @loop_data, $hr;
}
$t->param(LASTUPDATE_LOOP=>\@loop_data);
$t->param(lastupdate=>MylibML::daterus($lastupdate));
}