Diff for /register/prgsrc/register.cgi between versions 1.3 and 1.15

version 1.3, 2001/09/04 21:15:18 version 1.15, 2002/12/25 21:36:01
Line 34  $Revision$ Line 34  $Revision$
 ###################################################  ###################################################
   
     use strict;      use strict;
   use vars qw(%ENV);
 use CGI qw(:standard);  use CGI qw(:standard);
 use DBI;  use DBI;
 use POSIX qw(locale_h);  use POSIX qw(locale_h);
   
 setlocale(LC_CTYPE,'russian');  setlocale(LC_CTYPE,'russian');
   $ENV{'LANG'}='ru_RU.KOI8-R';
 my ($SENDMAIL) = "/usr/sbin/sendmail";  my ($SENDMAIL) = "mail";
 my $TO = 'borisv@lk.net';  my $TO = 'borisv@lk.net, igra@gorlovka.net, erudit@mail.od.ua';
 my $FROM = 'borisv@lk.net';  my $FROM = 'borisv@lk.net';
   
 my $date='$Date$';  my $date='$Date$';
Line 57  my $dbh = DBI->connect("DBI:mysql:chgk", Line 58  my $dbh = DBI->connect("DBI:mysql:chgk",
         die "Can't connect to DB chgk\n";          die "Can't connect to DB chgk\n";
     };      };
   
 print header;  print header(-charset=>'koi8-r');
   
   
 ##################################################  ##################################################
Line 85  my $self=url(); Line 86  my $self=url();
 # The navigation panel has three special lines  # The navigation panel has three special lines
 ###############################################  ###############################################
 print <<END;  print <<END;
 <dl>  <ul>
 <dt><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></dt>  <li><a href="$self">Home</a></li>
 <dt><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></dt>  <li><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></li>
 <dt><a href="$self?addclub=1">Добавить клуб</a></dt>  <li><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></li>
   <li><a href="$self?addclub=1">Добавить клуб</a></li>
   <li><a href="$self?whoiswho=1">Кто есть кто</a></li>
 END  END
   
 #################################################  #################################################
 # And the navpanel itself  # And the navpanel itself
 ##################################################  ##################################################
   
     print ListRegions(dbh=>$dbh,rid=>1,level=>1,tag=>'dt',      print ListRegions(dbh=>$dbh,rid=>1,level=>1,tag=>'li',
                       self=>$self);                        self=>$self);
           
 print <<END;  print <<END;
 </dl>  </ul>
 END  END
   
   
Line 119  END Line 122  END
 #  #
     print <<END;      print <<END;
   
 <h1 align=center><a href="http:/znatoki/klub/znat.html"><img   <h1 align=center>
 ismap border=0 src= "http:../images/logo.gif"   Журнал "Игра"<br>
   и<br>
   <a href="/znatoki/klub/znat.html"><img 
   ismap border=0 src= "../images/logo.gif" 
 alt="Интернет Клуб Что? Где? Когда?" width=319 height=27></a>  alt="Интернет Клуб Что? Где? Когда?" width=319 height=27></a>
 <br>ПРЕДСТАВЛЯЕТ<br>  <br>ПРЕДСТАВЛЯЮТ<br>
 Реестр Клубов Интеллектуальных Игр  Регистр Клубов Интеллектуальных Игр
 </h1>  </h1>
 END  END
   
Line 143  END Line 149  END
         $cid =~ s/(\d*)/$1/;          $cid =~ s/(\d*)/$1/;
         print ClubInfo(dbh=>$dbh,cid=>$cid,          print ClubInfo(dbh=>$dbh,cid=>$cid,
                        self=>$self);                         self=>$self);
       } elsif (param('pid')) {
           my $pid = param('pid');
           $pid =~ s/(\d*)/$1/;
           print ListPerson(dbh=>$dbh,pid=>$pid,
                            self=>$self,
                            positions=>1,
                            displayperson=>1);
       } elsif (param('whoiswho')) {
           print PrintWhoIsWho(dbh=>$dbh,
                               self=>$self);
     } elsif (param('addclub')) {      } elsif (param('addclub')) {
         print AddClub();          print AddClub();
     } elsif (param('Submit')) {      } elsif (param('Submit')) {
Line 154  END Line 170  END
 <dt><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></dt>  <dt><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></dt>
 <dt><a href="$self?addclub=1">Добавить клуб или изменить сведения  <dt><a href="$self?addclub=1">Добавить клуб или изменить сведения
 о клубе</a></dt>  о клубе</a></dt>
   <dt><a href="$self?whoiswho=1">Кто есть кто</a></dt>
 </dl>  </dl>
   <p align=center>
 END  END
   print &Include_virtual("../boris/register/regions.html");
   print <<END;
   </p>
   END
   }
   
 ####################################################################  ####################################################################
 # And the bottom of the page  # And the bottom of the page
 ###################################################################  ###################################################################
       my $sth=$dbh->prepare("select count(*) from Clubs");
       $sth->execute;
       my ($count) = $sth->fetchrow_array;
       $sth->finish;
   
     print "<p align=center>";      print "<p align=center>";
     print "Эту страничку посмотрели ";      print "Всего клубов: $count</p>\n";
     print `/home/piataev/public_html/cgi-bin/counter.sh /znatoki/cgi-bin/register.cgi`;  
     print " раз(а)</p>\n";  
           
     print <<END;      print <<END;
 <hr>  <hr>
Line 226  SELECT Name FROM Regions WHERE RID=$args Line 250  SELECT Name FROM Regions WHERE RID=$args
         return "";          return "";
     }      }
     my ($name)=$sth->fetchrow_array;      my ($name)=$sth->fetchrow_array;
     $name="<a href=\"$self?rid=$args{'rid'}&level=1&clubs=1\">$name</a>";      $name="<a href=\"$self?rid=$args{'rid'}&level=100&clubs=1\">$name</a>";
     my $result="<$args{'tag'}>$name</$args{'tag'}>\n";      my $result="<$args{'tag'}>$name</$args{'tag'}>\n";
     if ($args{'level'}>0) { # Print children      if ($args{'level'}>0) { # Print children
   
         # Frist, we print clubs          # Frist, we print clubs
         if ($args{'clubs'}) {          if ($args{'clubs'}) {
               $result .= ListRegionURLs(%args);
             $result .= ListClubs(%args);              $result .= ListClubs(%args);
         }          }
         $sth=$args{'dbh'}->prepare("          $sth=$args{'dbh'}->prepare("
Line 243  SELECT Child FROM RegionRegion WHERE Par Line 268  SELECT Child FROM RegionRegion WHERE Par
                 push @kids,"rid=$kid";                  push @kids,"rid=$kid";
             }              }
             my $clause = join(' OR ', @kids);              my $clause = join(' OR ', @kids);
             $result .= "<dl>\n";              $result .= "<ul>\n";
             $sth=$args{'dbh'}->prepare("              $sth=$args{'dbh'}->prepare("
 SELECT rid FROM Regions WHERE $clause ORDER BY Name");  SELECT rid FROM Regions WHERE $clause ORDER BY Name");
             $sth->execute;              $sth->execute;
Line 251  SELECT rid FROM Regions WHERE $clause OR Line 276  SELECT rid FROM Regions WHERE $clause OR
                 $result .= ListRegions(                  $result .= ListRegions(
                                        %args,'rid'=>$kid,                                         %args,'rid'=>$kid,
                                        'level'=>$args{'level'}-1,                                         'level'=>$args{'level'}-1,
                                        'tag'=>'dt');                                         'tag'=>'li');
             }              }
               $result .= "</ul>\n";
         }          }
     }      }
     return $result;      return $result;
 }  }
   
 ############################################################  ############################################################
 # List the clubs of a given region  # List the URLs of a given region
   ###########################################################
   sub ListRegionURLs {
       my %args = @_;
       my $sth;
       $sth = $args{'dbh'}->prepare("
   SELECT URL FROM Regions WHERE rid=$args{'rid'} and NOT ISNULL(URL)");
   
       $sth->execute;
           
       if (!$sth->rows) {
           return "";
       }
       
       my $result;
           
       $result=<<END;
   <dl><dt>Странички:</dt>
   <dd><dl>\n
   END
       
       while (my ($string)=$sth->fetchrow_array) {
           $string=htmlize($string);
           $result .= p($string);
       }
       $result .= "</dl></dd></dl>\n";
       return $result;
   }
   
   
   ############################################################
   # List the clubs of a given region or a given association
 ###########################################################  ###########################################################
 sub ListClubs {  sub ListClubs {
     my %args = @_;      my %args = @_;
Line 284  SELECT cid FROM ClubRegion WHERE rid=$ar Line 341  SELECT cid FROM ClubRegion WHERE rid=$ar
   
         $result=<<END;          $result=<<END;
 <h3>Клубы:</h3>  <h3>Клубы:</h3>
 <dd><dl>\n  <ul>\n
 END  END
      } else {       } else {
     
          $result=<<END;           $result=<<END;
 <dl><dt>Клубы:</dt>  <ul>\n
 <dd><dl>\n  
 END  END
     }      }
     my @clubs=();      my @clubs=();
Line 302  END Line 358  END
 SELECT cid, Name FROM Clubs WHERE $clause ORDER BY Name");  SELECT cid, Name FROM Clubs WHERE $clause ORDER BY Name");
     $sth->execute;      $sth->execute;
     while (my ($cid,$Name)=$sth->fetchrow_array) {      while (my ($cid,$Name)=$sth->fetchrow_array) {
           $result .= li("<a href=\"$self?cid=$cid\">$Name</a>\n");
       }
       $result .= "</ul>\n";
   }
   
   
   ############################################################
   # List the association a given club belongs to
   ###########################################################
   sub ListParents {
       my %args = @_;
       my $sth;
   
       $sth = $args{'dbh'}->prepare("
   SELECT Parent FROM ClubClub WHERE Child=$args{'cid'}");
   
       $sth->execute;
           
       if (!$sth->rows) {
           return "";
       }
       
       my $result;
           
       $result=<<END;
   <h3>Коллективный член ассоциаций:</h3>
   <dl>\n
   END
   
       my @clubs=();
       while (my ($club)=$sth->fetchrow_array) {
           push @clubs,"cid=$club";
       }
       my $clause = join(' OR ', @clubs);
       $sth=$args{'dbh'}->prepare("
   SELECT cid, Name FROM Clubs WHERE $clause ORDER BY Name");
       $sth->execute;
       while (my ($cid,$Name)=$sth->fetchrow_array) {
         $result .= dt("<a href=\"$self?cid=$cid\">$Name</a>\n");          $result .= dt("<a href=\"$self?cid=$cid\">$Name</a>\n");
     }      }
     $result .= "</dl></dd></dl>\n";      $result .= "</dl></dd></dl>\n";
Line 350  SELECT * FROM Clubs WHERE cid=$args{'cid Line 444  SELECT * FROM Clubs WHERE cid=$args{'cid
   
     $result .= ListPeople(%args);       $result .= ListPeople(%args); 
   
       $result .= ListParents(%args);
   
     $result .= ListClubs(%args);       $result .= ListClubs(%args); 
   
   
     if (my $string=$club->{'DoB'}) {      if (my $string=$club->{'DoB'}) {
         $result .= h3('История создания клуба')."\n".p($string);          $result .= h3('История создания клуба')."\n".p($string);
     }      }
Line 444  SELECT * FROM People WHERE pid=$args{'pi Line 541  SELECT * FROM People WHERE pid=$args{'pi
         return "";          return "";
     }      }
   
       my $result="";
     my @entries=();      my @entries=();
     my $person=$sth->fetchrow_hashref;      my $person=$sth->fetchrow_hashref;
     if (my $string = $person->{'Name'}) {      if (my $string = $person->{'Name'}) {
         push @entries, $string;          if ($args{'displayperson'}) {
               $result=h2($string);
           } else {
               push @entries, 
               "<a href=\"$args{'self'}?pid=$args{'pid'}\">$string</a>";
           }
     }      }
     if (my $string=$person->{'Address'}) {      if (my $string=$person->{'Address'}) {
         push @entries, "Адрес: $string";          push @entries, "Адрес: $string";
Line 455  SELECT * FROM People WHERE pid=$args{'pi Line 558  SELECT * FROM People WHERE pid=$args{'pi
   
     if (my $string=$person->{'URL'}) {      if (my $string=$person->{'URL'}) {
         $string = htmlize($string);          $string = htmlize($string);
         push @entries, "Домашнаяя страничка: $string";          push @entries, "Домашняя страничка: $string";
     }      }
   
     if (my $string=$person->{'Phone'}) {      if (my $string=$person->{'Phone'}) {
Line 471  SELECT * FROM People WHERE pid=$args{'pi Line 574  SELECT * FROM People WHERE pid=$args{'pi
         push @entries, "E-mail: $string";          push @entries, "E-mail: $string";
     }      }
   
     return p(join('; ',@entries).".");      $result.=p(join('; ',@entries).".");
       if ($args{'positions'}) {
           my $sth=$dbh->prepare("SELECT cid,Position FROM ClubPeople
   WHERE pid=$args{'pid'} ORDER by Weight");
           $sth->execute;
           $result .= "<dl>\n";
           while (my ($cid,$Position)=$sth->fetchrow_array) {
               my $sth1=$dbh->prepare("Select Name from Clubs where
   cid=$cid");
               $sth1->execute;
               my ($Name)=$sth1->fetchrow_array;
               $sth1->finish;
               $result .= "<dd><strong>$Position,</strong> ";
               $result .= "<a href=\"$args{self}?cid=$cid\">$Name</a></dd>\n";
           }
           $sth->finish;
           $result .= "</dl>\n";
       }
       return $result;
   
 }  }
   
Line 620  sub AddClub { Line 741  sub AddClub {
                                      -columns=>60)])),                                       -columns=>60)])),
                      );                       );
   
       $result .= h3("Кто регистрировал");
       $result .= table(
                        Tr(td(["Имя",
                               textfield(-name=>'RegistrarName',
                                        -size=>60)])),
                        Tr(td(["Email",
                               textfield(-name=>'RegistrarEmail',
                                        -size=>60)])),
                        );
   
     $result .= p("Нажав кнопку 'Submit', Вы отправите Вашу регистрационную       $result .= p("Нажав кнопку 'Submit', Вы отправите Вашу регистрационную 
 карточку службе поддержки реестра. Пожалуйста, подождите несколько дней, пока  карточку службе поддержки регистра. Пожалуйста, подождите несколько дней, пока
 Ваша информация будет обработана и попадёт в реестр");  Ваша информация будет обработана и попадёт в регистр");
     $result .= submit(-name=>'Submit');      $result .= submit(-name=>'Submit');
     $result .= end_form;      $result .= end_form;
     return $result;      return $result;
Line 632  sub AddClub { Line 763  sub AddClub {
 # Sending the letter with results  # Sending the letter with results
 #####################################################################  #####################################################################
 sub SendLetter {  sub SendLetter {
    open(MAIL,"| $SENDMAIL -t -n");     open(MAIL,"| $SENDMAIL -s 'Registracionnaya kartochka kluba' $TO");
     print MAIL <<END;      print MAIL <<END;
 To: $TO  
 From: $FROM  
 Subject: Registracionnaya kartochka kluba  
 MIME-Version: 1.0  MIME-Version: 1.0
 Content-type: text/plain; charset=koi8-r  Content-type: text/plain; charset=koi8-r
   
Line 650  END Line 778  END
     }      }
                           
   
     close MAIL;     close MAIL;
     return p("Спасибо за регистрацию. Ваши данные приняты и после ".     return p("Спасибо за регистрацию. Ваши данные приняты и после ".
              "обработки будут внесены в базу данных");              "обработки будут внесены в базу данных");
 }  }
   
   ###############################################################
   # Printing Who is Who list
   ###############################################################
   sub PrintWhoIsWho {
       my %args =@_;
       my $result = h2("Кто есть кто");
       $result .= "\n<dl>\n";
       my $sth = $dbh->prepare("SELECT pid,Name FROM People ORDER BY Name");  
       $sth->execute;
       while (my($pid,$Name)=$sth->fetchrow_array) {
           $result .= dd("<a href=\"$args{'self'}?pid=$pid\">$Name</a>");
           $result .= "\n";
       }
       $sth->finish;
       $result .= "</dl>\n";
       return $result;
   }

Removed from v.1.3  
changed lines
  Added in v.1.15


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