Диссертация (1136162), страница 53
Текст из файла (страница 53)
ID рубрики верхнего уровня...if($cid =~ /\D/){if(!(($pid) = &execsql("select ID from PAGES where ALIAS = '$cid'"))) # Значитв страницах нету с таким алиасом{if(!(($tid) = &execsql("select ID from RUBRICATOR where NODE_ALIAS ='$cid'"))) # В рубрикаторе нет меню с таким алиасом # Следовательно – страница безпривязки – загружается default меню и т.д.{$PARAM_0 = qq~<img src="/img/search_01.jpg" width="280" height="80"border="0" align="texttop" alt="Дополнительно" ondrag="return false;">~;$PARAM_1 = qq~Поиск~;$PARAM_2 = qq~ bgcolor="#777788"~;$free_page = 1;if(($cid eq "news")&&(!$type)){$type = 2;}elsif(($cid eq "articles")&&(!$type)){$type = 5;}elsif(($cid eq "map")&&(!$type)){$type = 7;}elsif(($cid eq "links_cat")&&(!$type)){$type = 8;}elsif(($cid eq "pictures")&&(!$type)){$type = 9;}elsif(($cid eq "smi")&&(!$type)){$type = 12;}elsif(($cid eq "licenses")&&(!$type)){$type = 19;}elsif(($cid eq "post")&&(!$type)){$type = 21;}elsif(($cid eq "arcsmi")&&(!$type)){$type = 23;}elsif(($cid eq "arcarticles")&&(!$type)){$type = 26;}}8else # В рубрикаторе нашлось соответствующее меню...{$cid = &get_level($tid,0);($node, $node_type, $nodealias) = &execsql("select NODE_ID, NODE_TYPE,NODE_ALIAS from RUBRICATOR where ID = '$tid'");($PARAM_0, $PARAM_1, $PARAM_2, $PARAM_3, $PARAM_4, $PARAM_5, $PARAM_6,$PARAM_7, $PARAM_8, $PARAM_9) = getcolumn($DBName.".TYPES","PARAM_0, PARAM_1,PARAM_2, PARAM_3, PARAM_4, PARAM_5, PARAM_6, PARAM_7, PARAM_8,PARAM_9",$node_type);$tid = &get_level($tid,1);$topmenu = &topmenu($cid); #(page id, template, current id, classname)($childmenu, $_openid) =&menu($cid,"leftmenu",$tid,"menu/leftmenu_outer");}}else # Среди страниц нашлась соответствующая{($tid) = &execsql("select ID, NODE_TYPE from RUBRICATOR where NODE_ID ='$pid' and PARENT_ID != '0'"); # Меню для этой страницы($tid) ||= &execsql("select ID, NODE_TYPE from RUBRICATOR where NODE_ID ='$pid'"); # Меню для этой страницы($cid) = &execsql("select PARENT_ID from RUBRICATOR where ID = '$tid'") if$tid>=0; # Меню для этой страницы($node, $node_type, $nodealias) = &execsql("select NODE_ID, NODE_TYPE,NODE_ALIAS from RUBRICATOR where ID = '$tid'");($PARAM_0, $PARAM_1, $PARAM_2, $PARAM_3, $PARAM_4, $PARAM_5, $PARAM_6,$PARAM_7, $PARAM_8, $PARAM_9) = getcolumn($DBName.".TYPES","PARAM_0, PARAM_1,PARAM_2, PARAM_3, PARAM_4, PARAM_5, PARAM_6, PARAM_7, PARAM_8,PARAM_9",$node_type);$topmenu = &topmenu($cid); #(page id, template, current id, classname)$childmenu = &menu($cid,"leftmenu",$tid,"menu/leftmenu_outer",$tid);}}################################# ################################################################## #############################if($cid eq ""){($pid) = &execsql("select ID from PAGES where ALIAS = 'default'"); # Страницапо умолчанию$defaultnode = $pid;if($pid){$defaultnode = $pid;my $template = "masterpages/".&getcolumn("PAGES","TEMPLATE",$pid);$name = $template;$name =~ s/\/$//g;}($cid) = &execsql("select ID from RUBRICATOR where NODE_ID = '$pid'"); # Менюдля этой страницыif(!$cid && $pid){$topmenu = &topmenu(0); #(page id, template, current id, classname)$childmenu = &menu(0,"leftmenu",0,"menu/leftmenu_outer",$tid);my $template = "masterpages/".&getcolumn("PAGES","TEMPLATE",$pid);$name = $template;$name =~ s/\/$//g;($text,$_name) = &text($pid); #(page)#########################$node ||= $defaultnode;#########################9$case_node = $node;$case_node ||= $nid;$text =~ s/\[:cid\]/$cid/g;$text =~ s/\[&alert\]/&alert()/eg;$text =~s/\[&random_images\]/&random_images($num_of_images,$images_tabble)/eg;$text =~ s/\[&case_images\]/&case_images($case_node,$num_of_images,$images_tabble)/eg;$text =~ s/\[&articles\]/&articles("PAGES","articles",2,"_articles")/eg;$text =~ s/\[&news\]/&news("PAGES","news",3,"_news")/eg;$text =~ s/\[&smi\]/&smi("PAGES","smi",$num_of_smi,"_smi")/eg;$text =~ s/\[&announces\]/&announces("PAGES","announces",2)/eg;$text =~ s/\[:(\w+)\]/${$1}/g;$flag = 1;}}# Вслучае, когда нашлись IDif($cid ne ""){$id = $tid;$id ||= $cid;if($cid =~ /\d/){$name = "masterpages/".&getcolumn("PAGES","TEMPLATE",$node) if $node;$topmenu_cid = &get_level($cid,0);$leftmenu_cid = &get_level($id,1);$topmenu = &topmenu($topmenu_cid); #(page id, template, current id,classname)$childmenu = &menu($topmenu_cid,"leftmenu",$leftmenu_cid, "",$tid);if(!$nodealias){($node, $node_type, $nodealias) = &execsql("select NODE_ID, NODE_TYPE,NODE_ALIAS from RUBRICATOR where ID = '$id'");($PARAM_0, $PARAM_1, $PARAM_2, $PARAM_3, $PARAM_4, $PARAM_5, $PARAM_6,$PARAM_7, $PARAM_8, $PARAM_9) = getcolumn($DBName.".TYPES","PARAM_0, PARAM_1,PARAM_2, PARAM_3, PARAM_4, PARAM_5, PARAM_6, PARAM_7, PARAM_8,PARAM_9",$node_type);}}if($nodealias){if(($nodealias eq "news")&&(!$type)){$type = 2;}elsif(($nodealias eq "articles")&&(!$type)){$type = 5;}elsif(($nodealias eq "map")&&(!$type)){$type = 7;}elsif(($nodealias eq "links_cat")&&(!$type)){$type = 8;}elsif(($nodealias eq "pictures")&&(!$type)){$type = 9;}elsif(($nodealias eq "licenses")&&(!$type)){$type = 19;}elsif(($nodealias eq "smi")&&(!$type)){$type = 12;}elsif(($nodealias eq "post")&&(!$type)){$type = 21;}elsif(($nodealias eq "arcsmi")&&(!$type)){$type = 23;}elsif(($nodealias eq "arcarticles")&&(!$type)){$type = 26;}# ..............
и т.д.}if($type == 1){$text = &news("PAGES","news",$num_of_news,$tid); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 2){($text,$_name) = &news("PAGES","news",9999999,"","anews"); #(page)$text =~ s/\[:cid\]/$cid/g;}10elsif($type == 3){($text,$_name) = &news("PAGES","news",1,$nid); #(page)$text =~ s/\[:cid\]/$nid/g;}elsif($type == 4){$text = &articles("PAGES","articles",$num_of_articles,$nid); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 5){($text,$_name) = &articles("PAGES","articles",9999999,"","aarticles");#(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 6){($text,$_name) = &articles("PAGES","articles",1,$nid); #(page)$text =~ s/\[:cid\]/$nid/g;}elsif($type == 7) # Карта сайта !!!{$search = openhtml("search/index");$topmenu = &topmenu(0); #(page id, template, current id, classname)if($search_line = $rq->param("keywords")){($text, $num) = &search_results("$search_line");if(!$num){$_name = $string{'0016'};}else{$_name = $string{'0010'}." ($num стр.)";}}else{$text = &treelist(); #(page)$search = &openhtml("search/index");$_name = $string{'0006'};}$search =~ s/\[:keywords\]/$search_line/g;$text =~ s/\[:cid\]/$nid/g;}elsif($type == 8) # Каталог ресурсов{$text = &openhtml("links_cat/index");($cat) = &cattreelist("links_cat"); #(page)$text =~ s/\[:text\]/$cat/g;$text =~ s/\[:cid\]/$nid/g;$_name = $string{'0012'};}elsif($type == 9)# Обои (заголовки){$text = collect_pictures();$_name = $string{'0014'};$text =~ s/\[:cid\]/$nid/g;}elsif($type == 10)# Обои (внутри){$text = collect_pictures($nid, $prop);$_name = $string{'0014'};}elsif($type == 11){$text = &smi("PAGES","smi",$num_of_smi,$tid); #(page)$text =~ s/\[:cid\]/$cid/g;11}elsif($type == 12){($text,$_name) = &smi("PAGES","smi",9999999,"","asmi"); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 13){($text,$_name) = &smi("PAGES","smi",1,$nid); #(page)$text =~ s/\[:cid\]/$nid/g;}elsif($type == 19)# Обои (заголовки){$text = collect_licenses();$_name = $string{'0015'};$text =~ s/\[:cid\]/$nid/g;}elsif($type == 20)# Обои (внутри){$text = collect_licenses($nid, $prop);$_name = $string{'0015'};}elsif($type == 21)# Почта{#prnerror($prop);$text = post_form($prop);$_name = $string{'0019'};$text =~ s/\[:cid\]/$nid/g;}elsif($type == 22){$text = &arcsmi("PAGES","arcsmi",$num_of_smi,$tid); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 23){($text,$_name) = &arcsmi("PAGES","arcsmi",9999999,"","asmi"); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 24){($text,$_name) = &arcsmi("PAGES","arcsmi",1,$nid); #(page)$text =~ s/\[:cid\]/$nid/g;}elsif($type == 25){$text = &arcarticles("PAGES","arcarticles",$num_of_articles,$nid); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 26){($text,$_name) =&arcarticles("PAGES","arcarticles",9999999,"","aarticles"); #(page)$text =~ s/\[:cid\]/$cid/g;}elsif($type == 27){($text,$_name) = &arcarticles("PAGES","arcarticles",1,$nid); #(page)$text =~ s/\[:cid\]/$nid/g;}else12{$filename = &getcolumn("PAGES","TEMPLATE","\"$node\"") if $filename eq "";if($filename){$template = "masterpages/".$filename;$template =~ s/\/$//g;}elsif($name && $filename eq ""){$template = "masterpages/".$name;$template =~ s/\/$//g;}else{$template = "masterpages/";}($text,$_name) = &text($node); #(page)$text =~ s/\[:cid\]/$cid/g;}$case_node = $node;$case_node ||= $nid;$text =~ s/\[&alert\]/&alert()/eg;$text =~s/\[&random_images\]/&random_images($num_of_images,$images_tabble)/eg;$text =~ s/\[&case_images\]/&case_images($case_node,$num_of_images,$images_tabble)/eg;$text =~s/\[&articles\]/&articles("PAGES","articles",$num_of_articles,"_articles")/eg;$text =~ s/\[&news\]/&news("PAGES","news",$num_of_news,"_news")/eg;$text =~ s/\[&smi\]/&smi("PAGES","smi",$num_of_smi,"_smi")/eg;$text =~ s/\[&announces\]/&announces("PAGES","announces",2)/eg;$text =~ s/\[:(\w+)\]/${$1}/g;}elsif(!$flag){prnerror("Error 1.","Uuups....
There is nо default page! \$name = $name, \$cid= $cid, \$tid = $tid, \$type = $type. \Sflag = $flag");}$name =~ s/\./\//g;$name =~ s/masterpages\///g;if($template eq ""){$template = "masterpages/$name" if $name ne "";$template ||= "masterpages/index";}if(open(F,"../nsh/$template")){close(F);$correct = 1;}#prnerror($template);if($correct == 1){$html = openhtml($template);}else{$html = openhtml("../nsh/masterpages/index");}#prnerror($html);$html =~ s/\[:cid\]/$cid/g;13$html =~ s/\[&alert\]/&alert()/eg;if($html =~ /\[&news\]/){($news) = &news("PAGES","news",$num_of_news,"_news");$html =~ s/\[&news\]/$news/g;}if($html =~ /\[&smi\]/){($smi) = &smi("PAGES","smi",$num_of_smi,"_smi");$html =~ s/\[&smi\]/$smi/g;}if($html =~ /\[&articles\]/){($articles) = &articles("PAGES","articles",$num_of_articles,"_articles");$html =~ s/\[&articles\]/$articles/eg;}$html =~ s/\[&xkey\]/&xkey/eg;$html =~ s/\[&random_images\]/&random_images($num_of_images,$images_tabble)/eg;$html =~ s/\[&case_images\]/&case_images($case_node,$num_of_images,$images_tabble)/eg;$html =~ s/\[:nid\]/$nid/g;$html =~ s/\[&announces\]/&announces("PAGES","announces",2)/eg;$html =~ s/\[:header]/$_name/g;$html =~ s/\[:(\w+)\]/${$1}/g;$html =~ s/\[String:(\w+)\]/$string{$1}/g;$html =~ s/http:\/\/show.itera.ru\//\//g;$html =~ s/http:\/\/edit.itera.ru\//\//g;$html =~ s/http:\/\/10.1.0.9:8020\//\//g;print "Content-type: text/html\n\n";print "$html";14ПРИЛОЖЕНИЕ ГИсходный текст процедуры конкретизации значений информационныхстраниц портального комплекса на основе шаблонов ИСУК (язык Perl)sub post_form{my $oper = shift;my $html;#prnerror($oper);if($oper eq "1")#success{$html = openhtml("post/success");}elsif($oper eq "0")#not success{$html = openhtml("post/unsuccess");}else{$html = openhtml("post/form");}return $html;}sub random_images{my $num = shift;my $Table = shift;my $lines = "";$Table ||= "IMAGES";$_return = &openhtml("images/body");$_line = &openhtml("images/line");my $sql = "SELECT distinct ID FROM $Table order by RAND()";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);my $i = 0;while((my ($_id) = $sth->fetchrow_array) && ($i < $num)){if(!&getcolumn("$Table","ID","ID and PARENT_ID = $_id")){my ($_name, $_lead) = &getcolumn("$Table","NAME, LEAD",$_id);$name = "" if $_name =~ /^#/;$lines .= $_line;$lines =~ s/\[:id\]/$_id/g;$lines =~ s/\[:name\]/$_name/g;$lines =~ s/\[:lead\]/$_lead/g;$i++;}}$sth->finish;$_return =~ s/\[:lines\]/$lines/g;return $_return;}15sub case_images{my $node = shift;my $num = shift;my $Table = shift;my $where;my $key;my $ids;my $lines = "";$Table ||= "IMAGES";$_return = &openhtml("images/body");$_line = &openhtml("images/line");my $i = 0;if($node){$key = &getcolumn("PAGES","KEYWORDS",$node);}if($key ne ""){$key =~ s/ /\%' or KEYWORDS like '\%/g;$where = "where KEYWORDS like '%".$key."%'";my $sql = "SELECT distinct ID FROM $Table $where order by RAND()";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);while((my ($_id) = $sth->fetchrow_array) && ($i < $num)){if(!&getcolumn("$Table","ID","ID and PARENT_ID = $_id")){my ($_name, $_lead) = &getcolumn("$Table","NAME, LEAD",$_id);$name = "" if $_name =~ /^#/;$lines .= $_line;$lines =~ s/\[:id\]/$_id/g;$lines =~ s/\[:name\]/$_name/g;$lines =~ s/\[:lead\]/$_lead/g;$ids .= $_id.",";$i++;}}$sth->finish;}if(($num - $i) > 0){$where = "";if($i > 0){$ids =~ s/,$//g;$where = "where ID not in($ids)";}my $sql = "SELECT distinct ID FROM $Table $where order by RAND()";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);while((my ($_id) = $sth->fetchrow_array) && ($i < $num)){if(!&getcolumn("$Table","ID","ID and PARENT_ID = $_id")){my ($_name, $_lead) = &getcolumn("$Table","NAME, LEAD",$_id);$name = "" if $_name =~ /^#/;$lines .= $_line;$lines =~ s/\[:id\]/$_id/g;$lines =~ s/\[:name\]/$_name/g;$lines =~ s/\[:lead\]/$_lead/g;$i++;16}}}$_return =~ s/\[:lines\]/$lines/g;return $_return;}sub collect_licenses{my $_parent_id = shift;my $_first = shift;my $_return;my $_line;my $_pname;$_parent_id ||=0;if($_parent_id == 0){$_pname = getcolumn("LICENSES","NAME","$_parent_id");my $sql = "SELECT ID, NAME FROM LICENSES WHERE PARENT_ID = '$_parent_id'order by SORT";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);$_return = &openhtml("licenses/toppage");$_line = &openhtml("licenses/topline");my $_toplines = "";my $_last = "";while(my ($_id, $_name) = $sth->fetchrow_array){$_num = getcolumn("LICENSES","count(ID)","ID and PARENT_ID = '$_id'");$_test = $_num - int($_num/10)*10;if($_test == 1) {$_last = "я";}elsif(($_test > 1) && ($_test < 5)) {$_last = "и";}else{$_last = "й";}$_toplines.=$_line;$_name = "" if $_name =~ /^#/;$_toplines =~ s/\[:id\]/$_id/g;$_toplines =~ s/\[:name\]/$_name/g;$_toplines =~ s/\[:num\]/$_num/g;$_toplines =~ s/\[:last\]/$_last/g;}$_return =~ s/\[:pname\]/$_pname/g;$_return =~ s/\[:toplines\]/$_toplines/g;$sth->finish;}else{$_pname = getcolumn("LICENSES","NAME","$_parent_id");$_return = &openhtml("licenses/insidepage");$_line = &openhtml("licenses/insideline");$_cont_1_2 = &openhtml("licenses/cont_1_2");$_cont_2_1 = &openhtml("licenses/cont_2_1");my $_cell = &openhtml("licenses/insidecell");my $_insidelines = "";my $_insidecell = "";my $_last = "";my $_n = 0;my $_num_of_lines = 0;my $_total_pics = getcolumn("LICENSES","COUNT(ID)","ID and PARENT_ID = '$_parent_id'");########################my $_total_of_lines = 9;########################my $_test_of_lines = (int($_total_pics/6)+1)*3;17$_total_of_lines = $_test_of_lines if $_test_of_lines > $_total_of_lines;$_insidelines = $_line;my $sql = "SELECT ID, NAME FROM LICENSES WHERE PARENT_ID = '$_parent_id'order by SORT";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);while($_n < ($_first*$_total_of_lines)){my ($_id, $_name) = $sth->fetchrow_array; $_n++;}$_n = 0;while((my ($_id, $_name) = $sth->fetchrow_array)&&($_num_of_lines < $_total_of_lines)){$_n++;if($_n == 4){$_insidelines.=$_line;$_n = 1;}$_incidecell = $_cell;$_incidecell =~ s/\[:id\]/$_id/g;$_name = "" if $_name =~ /^#/;$_incidecell =~ s/\[:name\]/$_name/g;$_insidelines =~ s/\[:_insidecell_$_n\]/$_incidecell/g;$_num_of_lines++}my $_continue = "";if($_total_pics > ($_total_of_lines+($_first*$_total_of_lines))){$_return =~ s/\[:continue\]/$_cont_1_2/g;}elsif($_first > 0){$_return =~ s/\[:continue\]/$_cont_2_1/g;}else{$_return =~ s/\[:continue\]//g;}$_return =~ s/\[:insidelines\]/$_insidelines/g;$_return =~ s/\[:parent\]/$_parent_id/g;$_return =~ s/\[:pname\]/$_pname/g;$sth->finish;}return $_return;}sub collect_pictures{my $_parent_id = shift;my $_first = shift;#prnerror($_first,"!!!");my $_return;my $_line;my $_pname;$_parent_id ||=0;if($_parent_id == 0){$_pname = getcolumn("PICTURES","NAME","$_parent_id");my $sql = "SELECT ID, NAME FROM PICTURES WHERE PARENT_ID = '$_parent_id'";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);18$_return = &openhtml("pictures/toppage");$_line = &openhtml("pictures/topline");my $_toplines = "";my $_last = "";while(my ($_id, $_name) = $sth->fetchrow_array){$_num = getcolumn("PICTURES","count(ID)","ID and PARENT_ID = '$_id'");$_test = $_num - int($_num/10)*10;if($_test == 1) {$_last = "я";}elsif(($_test > 1) && ($_test < 5)) {$_last = "и";}else{$_last = "й";}$_toplines.=$_line;$_name = "" if $_name =~ /^#/;$_toplines =~ s/\[:id\]/$_id/g;$_toplines =~ s/\[:name\]/$_name/g;$_toplines =~ s/\[:num\]/$_num/g;$_toplines =~ s/\[:last\]/$_last/g;}$_return =~ s/\[:pname\]/$_pname/g;$_return =~ s/\[:toplines\]/$_toplines/g;$sth->finish;}else{$_pname = getcolumn("PICTURES","NAME","$_parent_id");$_return = &openhtml("pictures/insidepage");$_line = &openhtml("pictures/insideline");$_cont_1_2 = &openhtml("pictures/cont_1_2");$_cont_2_1 = &openhtml("pictures/cont_2_1");my $_cell = &openhtml("pictures/insidecell");my $_insidelines = "";my $_insidecell = "";my $_last = "";my $_n = 0;my $_num_of_lines = 0;my $_total_pics = getcolumn("PICTURES","COUNT(ID)","ID and PARENT_ID = '$_parent_id'");########################my $_total_of_lines = 9;########################my $_test_of_lines = (int($_total_pics/6)+1)*3;$_total_of_lines = $_test_of_lines if $_test_of_lines > $_total_of_lines;$_insidelines = $_line;my $sql = "SELECT ID, NAME FROM PICTURES WHERE PARENT_ID = '$_parent_id'";my $sth = $db->prepare($sql) || &error ("0003", "Prepare:$sql\n".$db->errstr);$sth->execute || &error ("0003", "Execute:$sql\n".$db->errstr);while($_n < ($_first*$_total_of_lines)){my ($_id, $_name) = $sth->fetchrow_array; $_n++;}$_n = 0;while((my ($_id, $_name) = $sth->fetchrow_array)&&($_num_of_lines < $_total_of_lines)){$_n++;if($_n == 4){$_insidelines.=$_line;$_n = 1;}$_incidecell = $_cell;$_incidecell =~ s/\[:id\]/$_id/g;$_name = "" if $_name =~ /^#/;$_incidecell =~ s/\[:name\]/$_name/g;19#$_insidelines =~ s/\[:_insidecell_$_n\]/$_incidecell/g;$_num_of_lines++prnerror($_incidecell);}my $_continue = "";if($_total_pics > ($_total_of_lines+($_first*$_total_of_lines))){$_return =~ s/\[:continue\]/$_cont_1_2/g;}elsif($_first > 0){$_return =~ s/\[:continue\]/$_cont_2_1/g;}else{$_return =~ s/\[:continue\]//g;}#prnerror($_r);$_return =~ s/\[:insidelines\]/$_insidelines/g;$_return =~ s/\[:parent\]/$_parent_id/g;$_return =~ s/\[:pname\]/$_pname/g;$sth->finish;}return $_return;}sub text{my $_page = shift;my($_name,$_lead,$_text, $_field1) = &execsql("select NAME, LEAD, TEXT, FIELD1from PAGES where ID = '$_page'");if(!$_name && !$_text){$_name = "Страница временно недоступна...";$_text = openhtml("text/notavailible");;}my $_appearence = "";if($_field1 eq "checked"){$_appearence = qq~<td align="right"><a href="#"onclick="window.open('/isp/appearence?page_id=$_page','_blank','width=400, height=400')"><img src="/img/appearences.gif" border="0"></a></td><td align="right" valign="middle"><a href="#"onclick="window.open('/isp/appearence?page_id=$_page','_blank','width=400,height=400')"><b>Выступления</b></a> </td><br>~;}$_lead = ftextu($_lead);$_name = &base_html($_name);$_text = ftextu($_text);$_template_name = "text/page";$_template_name = "text/noheader" if $_text =~ /\[&/;my $temp = openhtml($_template_name);$temp =~ s/\[:_name\]/$_name/g;$temp =~ s/\[:_lead\]/$_lead/g;$temp =~ s/\[:_text\]/$_text/g;$temp =~ s/\[:appearence\]/$_appearence/g;return ($temp, $_name);}sub news{20my $_table = shift;my $_module = shift;my $_num = shift;my $_id = shift;my $_tmp = shift;my $_ret;my $_header;if($_id =~ /\D+/){$_ret = openhtml("news/".$_id); $_header = $string{'0003'}; $_id = "";}else{$_ret = openhtml("news/allnews"); $_header = $string{'0003'};}my $_return;if($_id){my $temp = openhtml("news/news");my($_lead,$_name,$_text) = &execsql("select SUBDATE, LEAD, TEXT from $_tablewhere ID = '$_id' and MODULE = '$_module' and DSTATUS = '1'");$_lead = &datetotext($_lead);$_lead = &to_text_date($_lead);$temp =~ s/\[:_name\]/$_name/g;$temp =~ s/\[:_lead\]/$_lead/g;$temp =~ s/\[:_text\]/$_text/g;$temp =~ s/\[:_id\]/$_id/g;return ($temp, $_name);}else{my $_tmpname;my $_continue = openhtml("news/continue");my $_count = 1;if($_tmp){$_tmpname = "news/".$_tmp;$_count = 0;}else{$_tmpname = "news/snews";}my $_temp = openhtml($_tmpname);my $QU = "select ID, SUBDATE, LEAD, TEXT from $_tablewhere MODULE = '$_module' and DSTATUS = '1' order by SUBDATE desc";my $ST = $db->prepare($QU) || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");while((my($_id, $_date, $_lead, $_text) = $ST->fetchrow_array) && ($_num > 0)){$_num -= $_count;$_return .= $_temp;$_date = &datetotext($_date);$_date = &to_text_date($_date);$_date =~ s/\./\//g;$_lead =~ s/\n/ /g;$_lead .= $_continue if $_text;$_lead =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_date\]/$_date/g;$_return =~ s/\[:_lead\]/$_lead/g;}$_ret =~ s/\[:_name\]/$_header/g;$_ret =~ s/\[:_text\]/$_return/g;$ST->finish;if($_return){return ($_ret,$_header);}else{return "";}}}sub smi21{my $_table = shift;my $_module = shift;my $_num = shift;my $_id = shift;my $_tmp = shift;my $_ret;my $_header;if($_id =~ /\D+/){$_ret = openhtml("smi/".$_id); $_header = $string{'0018'}; $_id = "";}else{$_ret = openhtml("smi/allsmi"); $_header = $string{'0018'};}my $_return;if($_id){my $temp = openhtml("smi/smi");my($_id, $_date,$_lead,$_text, $_name, $_smi) = &execsql("select ID, SUBDATE, LEAD, TEXT,NAME, FIELD1 from $_table where ID = '$_id' and MODULE = '$_module' and DSTATUS = '1'");$_date = &datetotext($_date);$_text = &base_html($_text);$temp =~ s/\[:_id\]/$_id/g;$temp =~ s/\[:_name\]/$_name/g;$temp =~ s/\[:_date\]/$_date/g;$temp =~ s/\[:_lead\]/$_lead/g;$temp =~ s/\[:_smi\]/$_smi/g;$_text = ftextu($_text);$temp =~ s/\[:_text\]/$_text/g;$_text = ftextu($_text);return ($temp, $_name);}else{my $_tmpname;my $_continue = openhtml("smi/continue");my $_count = 1;if($_tmp){$_tmpname = "smi/".$_tmp;$_count = 0;}else{$_tmpname = "smi/ssmi";}my $_temp = openhtml($_tmpname);my $QU = "select ID, SUBDATE, LEAD, TEXT, NAME, FIELD1 from $_tablewhere MODULE = '$_module' and DSTATUS = '1' order by SUBDATE desc, ID desc";my $ST = $db->prepare($QU) || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");while((my($_id, $_date, $_lead, $_text, $_pname, $_smi) = $ST->fetchrow_array) && ($_num > 0)){$_num -= $_count;$_return .= $_temp;$_date = &datetotext($_date);$_date =~ s/\./\//g;$_lead =~ s/\n/ /g;if($_count == 0){$_lead .= $_continue if $_text;$_lead =~ s/\[:_id\]/$_id/g;}else{$_pname .= $_continue if $_text;$_pname =~ s/\[:_id\]/$_id/g;}$_lead =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_smi\]/$_smi/g;$_return =~ s/\[:_date\]/$_date/g;$_return =~ s/\[:_pname\]/$_pname/g;$_return =~ s/\[:_lead\]/$_lead/g;}$_ret =~ s/\[:_name\]/$_header/g;22$_ret =~ s/\[:_text\]/$_return/g;$ST->finish;if($_return){return ($_ret,$_header);}else{return "";}}}sub articles{my $_table = shift;my $_module = shift;my $_num = shift;my $_id = shift;my $_tmp = shift;my $_ret;my $_header;if($_id =~ /\D+/){$_ret = openhtml("articles/".$_id); $_header = $string{'0005'}; $_id = "";}else{$_ret = openhtml("articles/allarticles"); $_header = $string{'0005'};}my $_return;if($_id){my $temp = openhtml("articles/articles");my($_name,$_lead,$_text,$_date) = &execsql("select NAME, LEAD, TEXT, SUBDATEfrom $_table where ID = '$_id' and MODULE = '$_module' and DSTATUS = '1'");$_date = &datetotext($_date);$_date =~ s/\./\//g;$temp =~ s/\[:_id\]/$_id/g;$temp =~ s/\[:_name\]/$_name/g;$temp =~ s/\[:_lead\]/$_lead/g;#prnerror($_text);$_text = ftextu($_text);$temp =~ s/\[:_text\]/$_text/g;$temp =~ s/\[:_date\]/$_date/g;return ($temp, $_name);}else{my $_tmpname;my $_add_field;my $_continue = openhtml("articles/continue");my $_count = 1;if($_tmp){$_tmpname = "articles/".$_tmp;$_count = 0;}else{$_tmpname = "articles/sarticles";}my $_temp = openhtml($_tmpname);my $QU = "select ID, NAME, SUBDATE, LEAD, TEXT from $_tablewhere MODULE = '$_module' and DSTATUS = '1' order by SUBDATE desc";my $ST = $db->prepare($QU) || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");while((my($_id, $_name, $_date, $_lead, $_text) = $ST->fetchrow_array) && ($_num > 0)){$_num -= $_count; $_return .= $_temp;$_date = &datetotext($_date);$_date =~ s/\./\//g;$_lead =~ s/\n/ /g;if($_count == 0){$_lead .= $_continue if $_text;$_lead =~ s/\[:_id\]/$_id/g;}else{$_name .= $_continue if $_text;$_name =~ s/\[:_id\]/$_id/g;}$_return =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_date\]/$_date/g;23$_return =~ s/\[:_lead\]/$_lead/g;$_return =~ s/\[:_name\]/$_name/g;}$_ret =~ s/\[:_name\]/$_header/g;$_ret =~ s/\[:_text\]/$_return/g;$ST->finish;if($_return){return ($_ret,$_header);}else{return "";}}}sub announces{my $_table = shift;my $_module = shift;my $_num = shift;my $_header;my $_test=0;my $_ret = openhtml("announces/announces"); $_header = $string{'0007'};my $_temp = openhtml("announces/_announces");my $_continue = openhtml("announces/continue");my $_secret_continue = openhtml("announces/secret_continue");my $_return;my $_count = 1;my $QU = "select ID, NAME, SUBDATE, LEAD, TEXT from $_table where MODULE = '$_module'and ADVANCED = '' order by SUBDATE desc";my $ST = $db->prepare($QU) || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");while((my($_id, $_name, $_date, $_lead, $_text) = $ST->fetchrow_array) && ($_num > 0)){$_test = 1;$_num -= $_count;$_return .= $_temp;$_date = &datetotext($_date);$_date =~ s/\./\//g;$_lead =~ s/\n/ /g;if($_text eq "SPECIAL"){$_lead .= $_secret_continue;}else{$_lead .= $_continue;}my $_tid = getcolumn("RUBRICATOR", "ID","ID and NODE_ID = '$_text'");if($_tid){$_cid = getcolumn("RUBRICATOR", "PARENT_ID", $_tid);}#else{$_cid = getcolumn("PAGES", "ALIAS", $_text);}$_ocid = $_cid;while($_cid != 0){$_ocid = $_cid;$_cid = getcolumn("RUBRICATOR", "PARENT_ID", $_cid);}$_cid = $_ocid;$_cid = $_tid if $_cid == 0;$_lead =~ s/\[:_cid\]/$_cid/g;$_lead =~ s/\[:_id\]/$_tid/g;$_return =~ s/\[:_date\]/$_date/g;$_return =~ s/\[:_name\]/$_name/g;$_return =~ s/\[:_lead\]/$_lead/g;}24$_ret =~ s/\[:_name\]/$_header/g;$_ret =~ s/\[:_text\]/$_return/g;#prnerror $_return;$ST->finish;if($_test == 1){return $_ret;}else{return "";}}sub alert{# вход в: http://angelscity.combats.ru/city.pl?level50my $_ret;my $_header;$_ret = openhtml("announces/topannonce"); $_header = $string{'0008'};my $_return;my $_continue = "";my $QU = "select ID, NAME, SUBDATE, LEAD, TEXT from PAGES where MODULE = 'announces'and ADVANCED = 'toppage' order by SUBDATE desc";my $ST = $db->prepare($QU) || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error",$db->errstr."\n<br>[$QU]");my($_id, $_name, $_date, $_lead, $_text) = $ST->fetchrow_array;if($_text eq "SPECIAL"){$_continue = openhtml("announces/secret_continue");}else{$_continue = openhtml("announces/continue");}$_return = openhtml("announces/topsannonce");$_lead =~ s/\n/ /g;$_lead .= $_continue;my $_tid = getcolumn("RUBRICATOR", "ID","ID and NODE_ID = '$_text'");if($_tid){$_cid = getcolumn("RUBRICATOR", "PARENT_ID", $_tid);}#else{$_cid = getcolumn("PAGES", "ALIAS", $_text);}$_ocid = $_cid;while($_cid != 0){$_ocid = $_cid;$_cid = getcolumn("RUBRICATOR", "PARENT_ID", $_cid);}$_cid = $_ocid;$_cid = $_tid if $_cid == 0;$_lead =~ s/\[:_cid\]/$_cid/g;$_lead =~ s/\[:_id\]/$_tid/g;$_return =~ s/\[:_date\]/$_date/g;$_return =~ s/\[:_name\]/$_name/g;$_return =~ s/\[:_lead\]/$_lead/g;$_ret =~ s/\[:_name\]/$_header/g;$_ret =~ s/\[:_text\]/$_return/g;$ST->finish;if($_id){return $_ret;}else{return "";}}sub gettree{my $parentid = shift;my $_padding = shift;#prnerror($_padding);$_padding += 18;my $_return="";25my $QU = "select ID, NAME from RUBRICATOR where PARENT_ID = $parentid and SORT >= 0order by SORT, NAME";my $ST = $db->prepare($QU) || prnerror ("Database Error", $db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error", $db->errstr."\n<br>[$QU]");while(my($_id, $_name) = $ST->fetchrow_array){my$_in = "\n".gettree($_id, $_padding);$_return .= "$_line\n";$_return =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_parentid\]/$parentid/g;$_return =~ s/\[:_in\]/$_in/g;$_return =~ s/\[:_padding\]/$_padding/g;#$_name = &flc($_name);$_return =~ s/\[:_name\]/$_name/g;}$ST->finish;return $_return;}sub treelist{my $_templatedir = shift;$_templatedir ||= "rubricator";$_line = &openhtml("../nsh/".$_templatedir."/treeline");$_topline = &openhtml("../nsh/".$_templatedir."/treetopline");my $_padding=0;my $QU = "select ID, NAME from RUBRICATOR where PARENT_ID = 0 and SORT >= 0order by SORT, NAME";my $ST = $db->prepare($QU) || prnerror ("Database Error", $db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error", $db->errstr."\n<br>[$QU]");while(my($_id, $_name) = $ST->fetchrow_array){$_in = gettree($_id, $_padding);$_return .= "$_topline\n";$_return =~ s/\[:_id\]/$_id/g;$_return =~ s/\[:_in\]/$_in/g;$_return =~ s/\[:_padding\]/$_padding/g;#$_name = &flc($_name);$_return =~ s/\[:_name\]/$_name/g;}$ST->finish;return $_return;}sub search_results{$_string = shift;$_line = openhtml("search/searchline");$_search = $_string;$_search =~ s/\s/%/g;my $QU = "select ID, NAME, SUBDATE, LEAD, TEXT, MODULE, FIELD1 from PAGES where (DSTATUS ='1' or DSTATUS is NULL) and (TEXT like '%".$_search."%' ||NAME like '%".$_search."%' || FIELD1 like '%".$_search."%') and MODULE != 'announces'";my $ST = $db->prepare($QU) || prnerror ("Database Error", $db->errstr."\n<br>[$QU]");$ST->execute || prnerror ("Database Error", $db->errstr."\n<br>[$QU]");while(my($_id, $_name, $_date, $_lead, $_text, $_module, $_field1) = $ST->fetchrow_array){if($_module eq "news"){$_text = $_lead." ".$_text; $_name = &datetotext($_date);}elsif($_module eq "smi"){$_text = $_name." ".$_field1.".<br> ".$_text;}else{$_text = $_name." ".$_text;}$_text = &ftextu($_text);$_text =~ s/[\n\r]//g;$_text =~ s/<\!-- //g;$_text =~ s/ -->/: /g;26$_text =~ s/<[^>]+>/ /g;$_text =~ s/\s+/ /g;$_text =~ s/^\s+//g;$_text =~ s/\s+!//g;$_text = &ruspack($_text);my $foundtext;my $minlength = length($_text) + 1;my $firstkeyword;$keywords = &ruspack($_string);foreach my $keyword (split(" ", $keywords)){if($_text =~ /$keyword/i){if (length($`) < $minlength){$minlength = length($`);$firstkeyword = $keyword;}}}if($firstkeyword){my ($_cid, $_pid) = getcolumn("RUBRICATOR","ID, PARENT_ID","ID and NODE_ID = '$_id'");if(1){$_pid = $_cid if $_pid == 0;$_pid ||= $_cid;$_cid ||= $_id;$count++;my $_path = "";$_path = &get_path($_cid, $_module);$_text =~ /($firstkeyword)/i;if (length($`) > 500){$foundtext = substr($`, length($`) - 500, 500) .