[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)); }