Diff for /db/prgsrc/db.cgi between versions 1.40 and 1.41

version 1.40, 2001/12/03 13:57:20 version 1.41, 2001/12/04 01:17:12
Line 1 Line 1
 #!/perl/bin/perl -w  #!/usr/bin/perl -w
   
 use DBI;  use DBI;
 use CGI ':all';  use CGI ':all';
Line 12  my $printqueries=0; Line 12  my $printqueries=0;
 my %forbidden=();  my %forbidden=();
 my $debug=0; #added by R7  my $debug=0; #added by R7
 my %fieldname= (0,'Question', 1, 'Answer', 2, 'Comments', 3, 'Authors', 4, 'Sources');  my %fieldname= (0,'Question', 1, 'Answer', 2, 'Comments', 3, 'Authors', 4, 'Sources');
   my %rusfieldname=('Question','÷ÏÐÒÏÓ', 'Answer', 'ïÔ×ÅÔ', 
                     'Comments', 'ëÏÍÍÅÎÔÁÒÉÉ', 'Authors', 'á×ÔÏÒ', 
                     'Sources', 'éÓÔÏÞÎÉË','old','óÔÁÒÙÊ','rus','îÏ×ÙÊ');
 my %searchin;  my %searchin;
 my $rl=qr/[ÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔØÂÀ£]/;  my $rl=qr/[ÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔØÂÀ£]/;
 my $RL=qr/[êãõëåîçûýúèÿüöäìïòðá÷ùæñþóíéôøâà³]/;  my $RL=qr/[êãõëåîçûýúèÿüöäìïòðá÷ùæñþóíéôøâà³]/;
Line 21  my $Ll=qr/(?:[A-Z])|(?:${RL})/; Line 24  my $Ll=qr/(?:[A-Z])|(?:${RL})/;
   
   
   
 my $thislocale;  
   
   my $thislocale;
   
 $searchin{'question'}=param('Question');  $searchin{$_}=1 foreach param('searchin');
 $searchin{'answer'}=param('Answer');  #$searchin{'Question'}=param('Question');
 $searchin{'comments'}=param('Comments');  #$searchin{'Answer'}=param('Answer');
 $searchin{'authors'}=param('Authors');  #$searchin{'Comments'}=param('Comments');
 $searchin{'sources'}=param('Sources');  #$searchin{'Authors'}=param('Authors');
   #$searchin{'Sources'}=param('Sources');
 my $all=param('all');  my $all=param('all');
 $all=0 if lc $all eq 'no';  $all=0 if lc $all eq 'no';
 my ($PWD) = `pwd`;  my ($PWD) = `pwd`;
Line 141  print "timee0=".time.br if $debug; Line 145  print "timee0=".time.br if $debug;
 }  }
   
   
   sub printform
   {
   
     my $submit=submit(-value=>'ðÏÉÓË');
     my $inputstring=textfield(-name=>'sstr',
                            -default=>param('sstr')||'',
                            -size=>50);
     my $fields=checkbox_group('searchin',['Question','Answer','Comments','Authors','Sources'], [grep $searchin{$_}, keys %searchin],
                'false',\%rusfieldname);
   
     my $metod=radio_group(-name=>'metod',-values=>['old','rus'],
                          -default=>param('metod')||'rus',
                          -labels=>\%rusfieldname);
     my $all=radio_group(-name=>'all',-values=>['yes','no'],
                          -default=>param('all')||'no',
                          -labels=>{'yes'=>'÷ÓÅ','no'=>'ìÀÂÏÅ'});
   
   #################################################
   return   start_form(-method=>'get',
                          -action=>url,
                          -enctype=>
                   "application/x-www-form-urlencoded"
   ).br.
   table(Tr
   (
     td({-valign=>'TOP'},$inputstring.$submit.p."íÅÔÏÄ: $metod".p."óÌÏ×Á: $all"),
     td({-valign=>'TOP'},(' 'x 8).'ðÏÌÑ:'),
     td({-valign=>'TOP'},$fields)
   ) 
   )
    
   #$fields.
   #$inputstring.$submit.br.$metod.$all
   .endform
   .hr
   
   }
   
 sub proxy  sub proxy
 {  {
 #print "time0=".time.br if $debug;  #print "time0=".time.br if $debug;
Line 168  sub proxy Line 210  sub proxy
          $good{$_}=1 if $c{$_}<200;           $good{$_}=1 if $c{$_}<200;
       }        }
   
         $good{$words[$_]}=0 foreach 11..$#words;
   
 #      foreach (@list)  #      foreach (@list)
 #      {  #      {
 #        if ($good{$_})  #        if ($good{$_})
Line 296  print "$query\n",br if $printqueries; Line 340  print "$query\n",br if $printqueries;
                     $ii+=4;                      $ii+=4;
                     $number=$lo+$hi*256;                      $number=$lo+$hi*256;
                     $field=$fieldname{$field};                      $field=$fieldname{$field};
                     if ($searchin{lc $field})                      if ($searchin{$field})
                     {                      {
                       push @{$tasksof{$i}{$number}}, $wordnumber;                        push @{$tasksof{$i}{$number}}, $wordnumber;
                                       # ÄÏÐÏÌÎÉÌÉ × ÈÜÛÅ, ×ÉÓÑÝÅÍ ÎÁ                                        # ÄÏÐÏÌÎÉÌÉ × ÈÜÛÅ, ×ÉÓÑÝÅÍ ÎÁ
Line 450  print $query if $printqueries; Line 494  print $query if $printqueries;
 ######  ######
          {           {
   
           foreach (qw/Question Answer Sources Authors Comments/) {  #         foreach (qw/Question Answer Sources Authors Comments/) {
                 if (param($_)) {            foreach (param('searchin')) {
   #               if (param($_)) {
                         push @fields, "IFNULL($_, '')";                          push @fields, "IFNULL($_, '')";
                 }  #               }
           }            }
           @sar = split " ", $sstr;            @sar = split " ", $sstr;
           for $i (0 .. $#sar) {            for $i (0 .. $#sar) {
Line 511  sub PrintList { Line 556  sub PrintList {
         $last=scalar @$Questions if scalar @$Questions <$last;          $last=scalar @$Questions if scalar @$Questions <$last;
         my($f,$l);          my($f,$l);
         my $nav='';          my $nav='';
           my $qs=query_string;
           $qs=~s/\;/\&/g;
           $qs=~s/\&first\=[^\&]+//g;
   
         for($f=1; $f<=@$Questions; $f+=$kvo)  
           if ($first>$kvo*3+1)
           {
              $nav.=
               ("&nbsp;"x4).
               a({href=>url."?".$qs."\&first=1"},"<<").("&nbsp;"x4).
               a({href=>(url."?".$qs."\&first=".($first-$kvo))},"<").("&nbsp;"x4)
           }
   
           else {$nav.='&nbsp;'x15;}
   
        my ($fprint,$lprint);
        my $llprint=$#$Questions- ($#$Questions+1)%$kvo+2;
        if ($#$Questions+1<=$kvo*7)
        {         $fprint=1;
                  $lprint=$llprint;
        }
        elsif ($first>$kvo*3 && $#$Questions+1-$first>$kvo*3)
        {
          $fprint=$first-$kvo*3;
          $lprint=$first+$kvo*3;
        } 
        elsif  ($first<=$kvo*3)
        {
           $fprint=1; $lprint=6*$kvo+1;
        }
        else
        { 
              $lprint=$llprint;
              $fprint=$lprint-$kvo*6
        }
            
   #        my $fprint=($first>$kvo*3) ? $first-$kvo*3 : 1;
   #        my $lprint=$#$Questions+1-$fprint>$kvo*7 ? $kvo*7 :$#$Questions+1;
   #        if ($lprint-$fprint<$kvo*6 && $fprint>1)
   #        {
   #            $fprint=$lprint-$kvo*6;
   #            $fprint=1 if ($fprint<=0) 
   #        }
   
   
   
           for($f=$fprint; $f<=$lprint; $f+=$kvo)
         {          {
   #         next if $first-$f>$kvo*3;
           $l=$f+$kvo-1;            $l=$f+$kvo-1;
           $l=$#$Questions+1 if $l>$#$Questions+1;            $l=$#$Questions+1 if $l>$#$Questions+1;
           if ($f==$first) {$nav.="[$f-$l] ";}            if ($f==$first) {$nav.="[$f-$l] ";}
           else {            else {
                   my $qs=query_string;                    $nav.= "[".a({href=>(url."?".$qs."\&first=$f")},"$f-$l")."] ";}
                   $qs=~s/\;/\&/g;  
                   $qs=~s/\&first\=[^\&]+//g;  
                   $qs.="\&first=$f";  
   
                   $nav.= "[".a({href=>(url."?".$qs)},"$f-$l")."] ";}  
         }          }
           if ($lprint+$kvo<$#$Questions)
           {
              $nav.=
               ("&nbsp;"x4).
               a({href=>(url."?".$qs."\&first=".($first+$kvo))},">").("&nbsp;"x4).
               a({href=>url."?".$qs."\&first=$llprint"},">>").("&nbsp;"x4)
           }
   
   
         print "$nav".br."\n";          print "$nav".br."\n";
         for (my $i = $first; $i <= $last; $i++) {          for (my $i = $first; $i <= $last; $i++) {
                 my $output = &PrintQuestion($dbh, $$Questions[$i-1], 1, $i, 1);                  my $output = &PrintQuestion($dbh, $$Questions[$i-1], 1, $i, 1);
Line 536  sub PrintList { Line 631  sub PrintList {
                 }                  }
                 print $output;                  print $output;
         }          }
   
   
         print "$nav".br."\n";          print "$nav".br."\n";
   
 }  }
   
 sub PrintSearch {  sub PrintSearch {
         my ($dbh, $sstr, $metod) = @_;          my ($dbh, $sstr, $metod) = @_;
           print h2("ðÏÉÓË × ÂÁÚÅ ×ÏÐÒÏÓÏ×");
           print printform;
         my @allnf;          my @allnf;
         my (@Questions) = &Search($dbh, \$sstr,$metod,$all,\@allnf);          my (@Questions) = &Search($dbh, \$sstr,$metod,$all,\@allnf);
         my ($output, $i, $suffix, $hits) = ('', 0, '', $#Questions + 1);          my ($output, $i, $suffix, $hits) = ('', 0, '', $#Questions + 1);
Line 1029  sub PrintDates { Line 1127  sub PrintDates {
   
 sub PrintQOfAuthor  sub PrintQOfAuthor
 {  {
   
     my ($dbh, $id) = @_;      my ($dbh, $id) = @_;
    $id=$dbh->quote($id);     $id=$dbh->quote($id);
     my $sth =  $dbh->prepare("SELECT  Name, Surname FROM Authors WHERE Id=$id");      my $sth =  $dbh->prepare("SELECT  Name, Surname FROM Authors WHERE Id=$id");
Line 1051  sub PrintQOfAuthor Line 1150  sub PrintQOfAuthor
         } else {          } else {
                 $suffix = 'Ñ';                  $suffix = 'Ñ';
         }          }
           print h2("ðÏÉÓË × ÂÁÚÅ ×ÏÐÒÏÓÏ×");
           print printform;
         print p({align=>"center"}, "á×ÔÏÒ ".strong("$name $surname. ")          print p({align=>"center"}, "á×ÔÏÒ ".strong("$name $surname. ")
         . " : $hits ÐÏÐÁÄÁÎÉ$suffix.");          . " : $hits ÐÏÐÁÄÁÎÉ$suffix.");
   
Line 1141  MAIN: Line 1241  MAIN:
                 print &Include_virtual("../dimrub/db/reklama.html");                  print &Include_virtual("../dimrub/db/reklama.html");
         }          }
   
   
 if ($^O =~ /win/i) {  if ($^O =~ /win/i) {
         $thislocale = "Russian_Russia.20866";          $thislocale = "Russian_Russia.20866";
 } else {  } else {
Line 1208  print $query if $printqueries; Line 1309  print $query if $printqueries;
               my $sth=$dbh->prepare($query);                my $sth=$dbh->prepare($query);
               $sth->execute;                $sth->execute;
               my $sstr= join ' ',$sth->fetchrow;                my $sstr= join ' ',$sth->fetchrow;
               $searchin{'question'}=1;                $searchin{'Question'}=1;
               $searchin{'answer'}=1;                $searchin{'Answer'}=1;
         $sstr=~tr/£³/Åå/;
 $sstr=~s/[^ÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔØÂÀêãõëåîçûýúèÿæù÷áðòïìäöüñþóíéôøâàa-zA-Z0-9]/ /gi;  $sstr=~s/[^ÊÃÕËÅÎÇÛÝÚÈßÆÙ×ÁÐÒÏÌÄÖÜÑÞÓÍÉÔØÂÀêãõëåîçûýúèÿæù÷áðòïìäöüñþóíéôøâàa-zA-Z0-9]/ /gi;
 #              print &PrintQuestion($dbh,$qid, 1, '!');  #              print &PrintQuestion($dbh,$qid, 1, '!');
               &PrintSearch($dbh, $sstr, 'proxy');                &PrintSearch($dbh, $sstr, 'proxy');

Removed from v.1.40  
changed lines
  Added in v.1.41


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>