Diff for /register/prgsrc/register.cgi between versions 1.2 and 1.12

version 1.2, 2001/09/04 19:33:18 version 1.12, 2002/08/12 21:10:55
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);
 use FileHandle;  
   
 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$';
   $date =~ s/[^ ]* ([^ ]*) .*/$1/; 
   
   
 my $dbh = DBI->connect("DBI:mysql:chgk", "piataev", "")  my $dbh = DBI->connect("DBI:mysql:chgk", "piataev", "")
     or do {      or do {
         print h1("Временные проблемы") . "База данных временно не          print h1("Временные проблемы") . "База данных временно не
Line 54  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 83  my $self=url(); Line 87  my $self=url();
 ###############################################  ###############################################
 print <<END;  print <<END;
 <dl>  <dl>
   <dt><a href="$self">Home</a></dt>
 <dt><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></dt>  <dt><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></dt>
 <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">Добавить клуб</a></dt>  <dt><a href="$self?addclub=1">Добавить клуб</a></dt>
   <dt><a href="$self?whoiswho=1">Кто есть кто</a></dt>
 END  END
   
 #################################################  #################################################
Line 116  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 140  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')) {
         print SendLetter();          print SendLetter();
     }      } else {
           print <<END;
   <dl>
   <dt><a href="$self?rid=1&level=1000&clubs=0">Все регионы</a></dt>
   <dt><a href="$self?rid=1&level=1000&clubs=1">Все клубы</a></dt>
   <dt><a href="$self?addclub=1">Добавить клуб или изменить сведения
   о клубе</a></dt>
   <dt><a href="$self?whoiswho=1">Кто есть кто</a></dt>
   </dl>
   <p align=center>
   END
   print &Include_virtual("../boris/register/regions.html");
   print <<END;
   </p>
   END
   }
   
   ####################################################################
   # 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 "Всего клубов: $count<br>\n";
       print "Эту страничку посмотрели ";
       print `/home/piataev/public_html/cgi-bin/counter.sh /znatoki/cgi-bin/register.cgi`;
       print " раз(а)</p>\n";
       
       print <<END;
   <hr>
   <address>
   <img width = 60 height = 80 src="../images/owl.gif" alt = "owl"> 
   <a href="http://users.lk.net/~borisv">
   Boris Veytsman</a>, $date
   </address>
   </body>
   </html>
   END
   
   
     print <<END;      print <<END;
 </td>  </td>
Line 193  SELECT Name FROM Regions WHERE RID=$args Line 253  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 220  SELECT rid FROM Regions WHERE $clause OR Line 281  SELECT rid FROM Regions WHERE $clause OR
                                        'level'=>$args{'level'}-1,                                         'level'=>$args{'level'}-1,
                                        'tag'=>'dt');                                         'tag'=>'dt');
             }              }
               $result .= "</dl>\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 251  SELECT cid FROM ClubRegion WHERE rid=$ar Line 344  SELECT cid FROM ClubRegion WHERE rid=$ar
   
         $result=<<END;          $result=<<END;
 <h3>Клубы:</h3>  <h3>Клубы:</h3>
 <dd><dl>\n  <dl>\n
 END  END
      } else {       } else {
     
Line 274  SELECT cid, Name FROM Clubs WHERE $claus Line 367  SELECT cid, Name FROM Clubs WHERE $claus
     $result .= "</dl></dd></dl>\n";      $result .= "</dl></dd></dl>\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 .= "</dl></dd></dl>\n";
   }
   
 #############################################################  #############################################################
 # The longest subroutine in the list...  # The longest subroutine in the list...
 #############################################################  #############################################################
Line 317  SELECT * FROM Clubs WHERE cid=$args{'cid Line 448  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 411  SELECT * FROM People WHERE pid=$args{'pi Line 545  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 438  SELECT * FROM People WHERE pid=$args{'pi Line 578  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 449  SELECT * FROM People WHERE pid=$args{'pi Line 607  SELECT * FROM People WHERE pid=$args{'pi
 sub AddClub {  sub AddClub {
     my $result=h2("Добавить клуб или изменить информацию о клубе");      my $result=h2("Добавить клуб или изменить информацию о клубе");
           
     $result .= <<END;  
 <p>  
 Спасибо за помощь в ведении реестра клубов.   
 Вы можете заполнить форму ниже или послать e-mail Борису Вейцману  
 по адресу <a href="mailto:borisv\@lk.net">borisv\@lk.net</a>  
 </p>  
 END  
     $result .= start_form;      $result .= start_form;
   
       $result .= h3("Контактная информация");
       $result .= p("Адрес, телефон, email и т.д. ниже -- НЕ адреса руководства
   клуба (их Вы введёте ниже), 
   а официальные адреса самого клуба. Если отдельного адреса,
   телефона, и т.д. у клуба нет, просто оставьте
   поля пустыми");
     $result .= table(Tr(td(["Название клуба",      $result .= table(Tr(td(["Название клуба",
                             textfield(-name=>'Name',                              textfield(-name=>'Name',
                                    -size=>60)])),                                     -size=>60)])),
                      Tr(td(["Официальный адрес клуба, если есть",                       Tr(td(["Официальный адрес клуба",
                             textarea(-name=>'Address',                              textarea(-name=>'Address',
                                      -rows=>5,                                       -rows=>5,
                                      -columns=>60)])),                                       -columns=>60)])),
                      Tr(td(["Страничка клуба, если есть",                       Tr(td(["Страничка клуба",
                             textfield(-name=>'URL',                              textfield(-name=>'URL',
                                      -size=>60)])),                                       -size=>60)])),
                      Tr(td(["Телефон клуба, если есть",                       Tr(td(["Телефон клуба",
                             textfield(-name=>'Phone',                              textfield(-name=>'Phone',
                                      -size=>60)])),                                       -size=>60)])),
                      Tr(td(["Факс клуба, если есть",                       Tr(td(["Факс клуба",
                             textfield(-name=>'Fax',                              textfield(-name=>'Fax',
                                      -size=>60)])),                                       -size=>60)])),
                      Tr(td(["E-mail клуба, если есть",                       Tr(td(["E-mail клуба",
                             textfield(-name=>'Email',                              textfield(-name=>'Email',
                                      -size=>60)])),                                       -size=>60)])),
                      Tr(td(["Руководство клуба: должность, ФИО, ".                       );
                             "адрес, телефон, факс, домашняя страница, e-mail",      $result .= h3("Руководство клуба");
                             textarea(-name=>'People',      $result .= p("Адреса и телефоны ниже будут опубликованы. Если Вы не хотите
                                      -rows=>10,  афишировать чьи-то адреса и телефоны, просто оставьте соответствующие поля
                                      -columns=>60)])),  пустыми");
       $result .= "<ol>\n";
       for(my $i=1;$i<=5;$i++) {
           $result .=li;
           $result .= table(
                            
                            Tr(td(["Должность",
                                   textfield(-name=>"Position$i",
                                             -size=>50)])),
                            Tr(td(["ФИО",
                                   textfield(-name=>"Name$i",
                                             -size=>50)])),
                            Tr(td(["Адрес",
                                   textarea(-name=>"Address$i",
                                            -columns=>50,
                                            -rows=>5)])),
                            Tr(td(["Телефон",
                                   textfield(-name=>"Phone$i",
                                             -size=>50)])),
                            Tr(td(["Факс",
                                   textfield(-name=>"Fax$i",
                                             -size=>50)])),
                            Tr(td(["Email",
                                   textfield(-name=>"Email$i",
                                             -size=>50)])),
                            Tr(td(["Домашняя страничка",
                                   textfield(-name=>"URL$i",
                                             -size=>50)])),
                            );
       }
       $result .= "</ol>\n";
       $result .= h3("Ассоциации и объединения");
       $result .= table(
                      Tr(td(["Ассоциации, членом котрых является клуб",                       Tr(td(["Ассоциации, членом котрых является клуб",
                             textarea(-name=>'Parents',                              textarea(-name=>'Parents',
                                      -rows=>5,                                       -rows=>5,
Line 489  END Line 680  END
                             textarea(-name=>'Members',                              textarea(-name=>'Members',
                                      -rows=>5,                                       -rows=>5,
                                      -columns=>60)])),                                       -columns=>60)])),
                        );
       $result .= h3("Жизнь клуба");
       $result .= table(
                      Tr(td(["История создания клуба",                       Tr(td(["История создания клуба",
                             textarea(-name=>'DoB',                              textarea(-name=>'DoB',
                                      -rows=>5,                                       -rows=>5,
Line 521  END Line 715  END
                             textarea(-name=>'OwnFests',                              textarea(-name=>'OwnFests',
                                      -rows=>5,                                       -rows=>5,
                                      -columns=>60)])),                                       -columns=>60)])),
                      Tr(td(["Дополнительные вопросы: А) Что вам больше всего нравится в журнале 'Игра'?                       );
 Б) Что вам больше всего не нравится в журнале 'Игра'?  
 В) Что бы вы хотели увидеть в журнале 'Игра' - то чего нет в настоящее      $result .= h3("География клуба (для будущей карты)");
 время?",      $result .= table(
                             textarea(-name=>'Igra',                       Tr(td(["Долгота",
                                      -rows=>10,                              textfield(-name=>"Longitude",
                                         -size=> 60)])),
                        Tr(td(["Широта",
                               textfield(-name=>"Latitude",
                                         -size=> 60)])),
                        );
   
       $result .= h3("Дополнительные вопросы");
       $result .= table(
   
                        Tr(td(["Что вам больше всего нравится в журнале 'Игра'?",
                               textarea(-name=>'IgraA',
                                        -rows=>5,
                                        -columns=>60)])),
                        Tr(td(["Что вам больше всего не нравится в журнале 'Игра'?",
                               textarea(-name=>'IgraB',
                                        -rows=>5,
                                        -columns=>60)])),
                        Tr(td(["Что бы вы хотели увидеть в журнале 'Игра' - то 
   чего нет в настоящее время?",
                               textarea(-name=>'IgraC',
                                        -rows=>5,
                                      -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 .= submit(-name=>'Submit');      $result .= submit(-name=>'Submit');
     $result .= end_form;      $result .= end_form;
     return $result;      return $result;
Line 538  END Line 767  END
 # Sending the letter with results  # Sending the letter with results
 #####################################################################  #####################################################################
 sub SendLetter {  sub SendLetter {
     my $MAIL= new FileHandle("| $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
   
 END  END
     print $MAIL &CGI::dump;      foreach my $key (param) {
           my $value = param($key);
           if ($value =~ /^\s*$/) {
               next;
           }
           print MAIL "$key=$value\n\n";
       }
               
   
     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.2  
changed lines
  Added in v.1.12


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