#!/usr/bin/perl -w
#################################################################################
print "Content-type: text/html\n\n";
use strict;
use TRequire;
my %cs = &econst;
$|=1;
#################################################################################
# прием входных данных - стандартная конструкция
my $buf1 = '';
my $buf2 = '';
if (defined $ENV{'CONTENT_LENGTH'}){
while (($ENV{'CONTENT_LENGTH'} > 0)&&(length($buf1) < $ENV{'CONTENT_LENGTH'})){
my $bufT = '';
sysread(STDIN,$bufT,$ENV{'CONTENT_LENGTH'});
$buf1 .= $bufT;}
}
$buf2=$ENV{'QUERY_STRING'};
my %forms = &forms_cod($buf1,$buf2);
if (!defined $forms{selpage}) {$forms{selpage} = 1;}
my $TextError = '';
&Proverka();
sub Proverka(){
# print "Proverka
\n";
&Spisok();
}
############################################################## печать списка
sub Spisok(){
# print "Spisok
\n";
my $SHuser_spisok = &egetshablon('user_spisok.htm');
my $SHuser_spisok1 = '';
my $SHuser_spisok2 = '';
my $SHuser_spisok_poz = '';
$SHuser_spisok =~ /(.+)T-spisokstart-T/s; $SHuser_spisok1 = $1;
$SHuser_spisok =~ /T-spisokstart-T(.+)T-spisokend-T/s; $SHuser_spisok_poz = $1;
$SHuser_spisok =~ /T-spisokend-T(.+)/s; $SHuser_spisok2 = $1;
my @all = &zapros("SELECT eb_id,eb_text,eb_fulltext,eb_datetime FROM eboard WHERE eb_text!='' AND eb_fulltext!='' ",$cs{sql_base},$cs{sql_login},$cs{sql_password});
@all = &sortir(['-4'],\@all);
$SHuser_spisok1 =~ s/T-Tselpage-T/$forms{selpage}/;
$SHuser_spisok1 =~ s/T-Tzagl-T/Board/;
my $str = &str_page(\@all,$forms{selpage},$cs{col_page},$cs{col_str});
$SHuser_spisok1 =~ s/T-Tstr-T/$str/g;
$SHuser_spisok2 =~ s/T-Tstr-T/$str/g;
print $SHuser_spisok1;
foreach (@all){
$_->[1] = $_->[1] || '-';
$_->[2] = $_->[2] || '-';
my $tex1 = $_->[1];
my $tex2 = $_->[2];
if (length($tex1) > 100) {$_->[1] = '' . substr($_->[1],0,96) . " ...";}
if (length($tex2) > 1000) {$_->[2] = '' . substr($_->[2],0,996) . " ...";}
my $SHuser_spisok_p = $SHuser_spisok_poz;
$SHuser_spisok_p =~ s/T-Tid-T/$_->[0]/g;
$SHuser_spisok_p =~ s/T-Ttext-T/$_->[1]/g;
$SHuser_spisok_p =~ s/T-Tfulltext-T/$_->[2]/g;
$_->[3] = substr($_->[3],0,10);
$SHuser_spisok_p =~ s/T-Tdata-T/$_->[3]/g;
print $SHuser_spisok_p;
}
print $SHuser_spisok2;
}
sub str_page(){
# my $str = &str_page(\@all,$page,$col_page,$col_str);
use POSIX qw(floor ceil);
my $TPageTableRef = shift;
my $TPageSelPage = shift;
my $TPage_col_page = 10;
my $TPage_col_str = 10;
$TPage_col_page = shift;
$TPage_col_str = shift;
my $TPageTableStr = @$TPageTableRef;
my $TPage_col_page_all = ceil( $TPageTableStr / $TPage_col_str );
my $TPage_up_page = 0;
if ($TPageSelPage > $TPage_col_page){
my $tex = 0;
if( $TPageSelPage % $TPage_col_page ){
$tex = floor( $TPageSelPage / $TPage_col_page );
}else{
$tex = floor( ( $TPageSelPage - 1 ) / $TPage_col_page );
}
$TPage_up_page = $tex * $TPage_col_page;
}
my $TPage_down_page = $TPage_up_page + $TPage_col_page + 1;
if ($TPageTableStr <= $TPage_col_str){
return '';
}
my $TPageStr = '';
# $TPageStr .= $TPage_col_page_all . ' ' . TPageSub1($TPage_col_page_all) . ' (' . $TPageTableStr . ' поз.): ';
$TPageStr .= '' . $TPageTableStr . ' pos. (' . $TPage_col_page_all . ' pag.): ';
if ($TPageSelPage > $TPage_col_page){
$TPageStr .= "<< ";
}
my $TPageX = 0;
if ( ($TPage_col_page_all - $TPage_up_page) >= $TPage_col_page ){
$TPageX = $TPage_col_page;
}
else{
$TPageX = $TPage_col_page_all - $TPage_up_page;
}
for (my $TPageY = 1; $TPageY <= $TPageX; $TPageY++){
if (($TPageY + $TPage_up_page) == $TPageSelPage){
$TPageStr .= ' ' . $TPageSelPage . ' ';
}
else{
$TPageStr .= " " . ($TPageY + $TPage_up_page) . " ";
}
}
if ($TPage_col_page_all > ($TPage_down_page - 1)){
if (($TPage_col_page_all - $TPage_down_page + 1) >= $TPage_col_page){
$TPageX = $TPage_col_page;
}
else{
$TPageX = $TPage_col_page_all - $TPage_down_page + 1;
}
$TPageStr .= " >> ";
}
if(scalar(@$TPageTableRef) > ($TPageSelPage * $TPage_col_str) ){
splice(@$TPageTableRef,($TPageSelPage * $TPage_col_str));
}
splice(@$TPageTableRef,0,($TPageSelPage * $TPage_col_str) - $TPage_col_str);
return $TPageStr;
}
exit 1;