--- register/prgsrc/register.cgi 2001/09/04 21:15:18 1.3 +++ register/prgsrc/register.cgi 2003/09/04 21:09:47 1.17 @@ -20,11 +20,11 @@ Boris Veytsman =head1 DATE -$Date: 2001/09/04 21:15:18 $ +$Date: 2003/09/04 21:09:47 $ =head1 REVISION -$Revision: 1.3 $ +$Revision: 1.17 $ =cut @@ -34,17 +34,18 @@ $Revision: 1.3 $ ################################################### use strict; +use vars qw(%ENV); use CGI qw(:standard); use DBI; use POSIX qw(locale_h); setlocale(LC_CTYPE,'russian'); - -my ($SENDMAIL) = "/usr/sbin/sendmail"; -my $TO = 'borisv@lk.net'; +$ENV{'LANG'}='ru_RU.KOI8-R'; +my ($SENDMAIL) = "mail"; +my $TO = 'borisv@lk.net, igra@gorlovka.net, erudit@mail.od.ua'; my $FROM = 'borisv@lk.net'; -my $date='$Date: 2001/09/04 21:15:18 $'; +my $date='$Date: 2003/09/04 21:09:47 $'; $date =~ s/[^ ]* ([^ ]*) .*/$1/; @@ -52,12 +53,12 @@ my $dbh = DBI->connect("DBI:mysql:chgk", or do { print h1("Временные проблемы") . "База данных временно не работает. Заходите попозже."; - print &Include_virtual("../dimrub/db/reklama.html"); + print &Include_virtual("../../dimrub/db/reklama.html"); print end_html; die "Can't connect to DB chgk\n"; }; -print header; +print header(-charset=>'koi8-r'); ################################################## @@ -65,12 +66,12 @@ print header; ################################################## print start_html(-"title"=>'Register of Clubs', -author=>'borisv@lk.net', - -background=>"../images/map.jpg"); -print &Include_virtual("../dimrub/db/reklama.html"); + -background=>"../../images/map.jpg"); +print &Include_virtual("../../dimrub/db/reklama.html"); print < - + END ################################################ @@ -85,21 +86,23 @@ my $self=url(); # The navigation panel has three special lines ############################################### print < -
Все регионы
-
Все клубы
-
Добавить клуб
+ END @@ -119,11 +122,14 @@ END # print < +Журнал "Игра"

+
Интернет Клуб Что? Где? Когда? -
ПРЕДСТАВЛЯЕТ
-Реестр Клубов Интеллектуальных Игр +
ПРЕДСТАВЛЯЮТ
+Регистр Клубов Интеллектуальных Игр END @@ -143,6 +149,16 @@ END $cid =~ s/(\d*)/$1/; print ClubInfo(dbh=>$dbh,cid=>$cid, 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')) { print AddClub(); } elsif (param('Submit')) { @@ -154,23 +170,31 @@ END
Все клубы
Добавить клуб или изменить сведения о клубе
+
Кто есть кто
+

END - +print &Include_virtual("../../boris/register/regions.html"); +print < +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 "

"; - print "Эту страничку посмотрели "; - print `/home/piataev/public_html/cgi-bin/counter.sh /znatoki/cgi-bin/register.cgi`; - print " раз(а)

\n"; + print "Всего клубов: $count

\n"; print <
-owl +owl Boris Veytsman, $date
@@ -226,12 +250,13 @@ SELECT Name FROM Regions WHERE RID=$args return ""; } my ($name)=$sth->fetchrow_array; - $name="$name"; + $name="$name"; my $result="<$args{'tag'}>$name\n"; if ($args{'level'}>0) { # Print children # Frist, we print clubs if ($args{'clubs'}) { + $result .= ListRegionURLs(%args); $result .= ListClubs(%args); } $sth=$args{'dbh'}->prepare(" @@ -243,7 +268,7 @@ SELECT Child FROM RegionRegion WHERE Par push @kids,"rid=$kid"; } my $clause = join(' OR ', @kids); - $result .= "
\n"; + $result .= "
    \n"; $sth=$args{'dbh'}->prepare(" SELECT rid FROM Regions WHERE $clause ORDER BY Name"); $sth->execute; @@ -251,22 +276,54 @@ SELECT rid FROM Regions WHERE $clause OR $result .= ListRegions( %args,'rid'=>$kid, 'level'=>$args{'level'}-1, - 'tag'=>'dt'); + 'tag'=>'li'); } + $result .= "
\n"; } } 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=<
Странички:
+
\n +END + + while (my ($string)=$sth->fetchrow_array) { + $string=htmlize($string); + $result .= p($string); + } + $result .= "
\n"; + return $result; +} + + +############################################################ +# List the clubs of a given region or a given association ########################################################### sub ListClubs { my %args = @_; my $sth; if ($args{'cid'}) { $sth = $args{'dbh'}->prepare(" -SELECT Child FROM ClubClub WHERE Parent=$args{'cid'}"); +SELECT Child, Status FROM ClubClub WHERE Parent=$args{'cid'}"); } else { $sth = $args{'dbh'}->prepare(" SELECT cid FROM ClubRegion WHERE rid=$args{'rid'}"); @@ -284,25 +341,78 @@ SELECT cid FROM ClubRegion WHERE rid=$ar $result=<Клубы: -
\n +
    \n END } else { $result=<
    Клубы:
    -
    \n +
      \n END } my @clubs=(); - while (my ($club)=$sth->fetchrow_array) { + my %stat=(); + while (my ($club,$status)=$sth->fetchrow_array) { + push @clubs,"cid=$club"; + if ($status) { + $stat{$club}=$status; + } + } + 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) { + my $res="$Name\n"; + if (exists $stat{$cid}) { + $res .= " ($stat{$cid})\n"; + } + $result .= li($res); + } + $result .= "
    \n"; +} + + +############################################################ +# List the association a given club belongs to +########################################################### +sub ListParents { + my %args = @_; + my $sth; + + $sth = $args{'dbh'}->prepare(" +SELECT Parent, Status FROM ClubClub WHERE Child=$args{'cid'}"); + + $sth->execute; + + if (!$sth->rows) { + return ""; + } + + my $result; + + $result=<Коллективный член ассоциаций: +
    \n +END + + my @clubs=(); + my %stat=(); + while (my ($club,$status)=$sth->fetchrow_array) { push @clubs,"cid=$club"; + if ($status) { + $stat{$club}=$status; + } } 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("$Name\n"); + my $res = "$Name\n"; + if (exists $stat{$cid}) { + $res .= " ($stat{$cid})\n"; + } + $result .= dt($res); } $result .= "
\n"; } @@ -350,8 +460,11 @@ SELECT * FROM Clubs WHERE cid=$args{'cid $result .= ListPeople(%args); + $result .= ListParents(%args); + $result .= ListClubs(%args); + if (my $string=$club->{'DoB'}) { $result .= h3('История создания клуба')."\n".p($string); } @@ -444,10 +557,16 @@ SELECT * FROM People WHERE pid=$args{'pi return ""; } + my $result=""; my @entries=(); my $person=$sth->fetchrow_hashref; if (my $string = $person->{'Name'}) { - push @entries, $string; + if ($args{'displayperson'}) { + $result=h2($string); + } else { + push @entries, + "$string"; + } } if (my $string=$person->{'Address'}) { push @entries, "Адрес: $string"; @@ -455,7 +574,7 @@ SELECT * FROM People WHERE pid=$args{'pi if (my $string=$person->{'URL'}) { $string = htmlize($string); - push @entries, "Домашнаяя страничка: $string"; + push @entries, "Домашняя страничка: $string"; } if (my $string=$person->{'Phone'}) { @@ -471,7 +590,25 @@ SELECT * FROM People WHERE pid=$args{'pi 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 .= "
\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 .= "
$Position, "; + $result .= "$Name
\n"; + } + $sth->finish; + $result .= "
\n"; + } + return $result; } @@ -620,9 +757,19 @@ sub AddClub { -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 .= end_form; return $result; @@ -632,11 +779,8 @@ sub AddClub { # Sending the letter with results ##################################################################### sub SendLetter { - open(MAIL,"| $SENDMAIL -t -n"); + open(MAIL,"| $SENDMAIL -s 'Registracionnaya kartochka kluba' $TO"); print MAIL <prepare("SELECT pid,Name FROM People ORDER BY Name"); + $sth->execute; + while (my($pid,$Name)=$sth->fetchrow_array) { + $result .= dd("$Name"); + $result .= "\n"; + } + $sth->finish; + $result .= "\n"; + return $result; +}