version 1.4, 2001/09/11 20:19:42
|
version 1.18, 2004/04/19 20:29:38
|
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, igra@gorlovka.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 52 my $dbh = DBI->connect("DBI:mysql:chgk",
|
Line 53 my $dbh = DBI->connect("DBI:mysql:chgk",
|
or do { |
or do { |
print h1("Временные проблемы") . "База данных временно не |
print h1("Временные проблемы") . "База данных временно не |
работает. Заходите попозже."; |
работает. Заходите попозже."; |
print &Include_virtual("../dimrub/db/reklama.html"); |
print &Include_virtual("../../dimrub/db/reklama.html"); |
print end_html; |
print end_html; |
die "Can't connect to DB chgk\n"; |
die "Can't connect to DB chgk\n"; |
}; |
}; |
|
|
print header; |
print header(-charset=>'koi8-r'); |
|
|
|
|
################################################## |
################################################## |
Line 65 print header;
|
Line 66 print header;
|
################################################## |
################################################## |
print start_html(-"title"=>'Register of Clubs', |
print start_html(-"title"=>'Register of Clubs', |
-author=>'borisv@lk.net', |
-author=>'borisv@lk.net', |
-background=>"../images/map.jpg"); |
-background=>"../../images/map.jpg"); |
print &Include_virtual("../dimrub/db/reklama.html"); |
print &Include_virtual("../../dimrub/db/reklama.html"); |
print <<END; |
print <<END; |
<table> |
<table> |
<tr> |
<tr> |
<td background=../images/compass.gif valign=top> |
<td background=../../images/compass.gif valign=top> |
END |
END |
|
|
################################################ |
################################################ |
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 122 END
|
Line 125 END
|
<h1 align=center> |
<h1 align=center> |
Журнал "Игра"<br> |
Журнал "Игра"<br> |
и<br> |
и<br> |
<a href="http:/znatoki/klub/znat.html"><img |
<a href="/znatoki/klub/znat.html"><img |
ismap border=0 src= "http:../images/logo.gif" |
ismap border=0 src= "../../images/logo.gif" |
alt="Интернет Клуб Что? Где? Когда?" width=319 height=27></a> |
alt="Интернет Клуб Что? Где? Когда?" width=319 height=27></a> |
<br>ПРЕДСТАВЛЯЮТ<br> |
<br>ПРЕДСТАВЛЯЮТ<br> |
Регистр Клубов Интеллектуальных Игр |
Регистр Клубов Интеллектуальных Игр |
Line 146 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 157 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 |
|
print &Include_virtual("../../boris/register/regions.html"); |
|
print <<END; |
|
</p> |
END |
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> |
<address> |
<address> |
<img width = 60 height = 80 src="../images/owl.gif" alt = "owl"> |
<img width = 60 height = 80 src="../../images/owl.gif" alt = "owl"> |
<a href="http://users.lk.net/~borisv"> |
<a href="http://users.lk.net/~borisv"> |
Boris Veytsman</a>, $date |
Boris Veytsman</a>, $date |
</address> |
</address> |
Line 235 SELECT Name FROM Regions WHERE RID=$args
|
Line 256 SELECT Name FROM Regions WHERE RID=$args
|
|
|
# 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 246 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 254 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 .= "</dl>\n"; |
$result .= "</ul>\n"; |
} |
} |
} |
} |
return $result; |
return $result; |
} |
} |
|
|
############################################################ |
############################################################ |
|
# 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 |
# List the clubs of a given region or a given association |
########################################################### |
########################################################### |
sub ListClubs { |
sub ListClubs { |
Line 270 sub ListClubs {
|
Line 323 sub ListClubs {
|
my $sth; |
my $sth; |
if ($args{'cid'}) { |
if ($args{'cid'}) { |
$sth = $args{'dbh'}->prepare(" |
$sth = $args{'dbh'}->prepare(" |
SELECT Child FROM ClubClub WHERE Parent=$args{'cid'}"); |
SELECT Child, Status FROM ClubClub WHERE Parent=$args{'cid'}"); |
} else { |
} else { |
$sth = $args{'dbh'}->prepare(" |
$sth = $args{'dbh'}->prepare(" |
SELECT cid FROM ClubRegion WHERE rid=$args{'rid'}"); |
SELECT cid FROM ClubRegion WHERE rid=$args{'rid'}"); |
Line 288 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=(); |
while (my ($club)=$sth->fetchrow_array) { |
my %stat=(); |
|
while (my ($club,$status)=$sth->fetchrow_array) { |
push @clubs,"cid=$club"; |
push @clubs,"cid=$club"; |
|
if ($status) { |
|
$stat{$club}=$status; |
|
} |
} |
} |
my $clause = join(' OR ', @clubs); |
my $clause = join(' OR ', @clubs); |
$sth=$args{'dbh'}->prepare(" |
$sth=$args{'dbh'}->prepare(" |
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 .= dt("<a href=\"$self?cid=$cid\">$Name</a>\n"); |
my $res="<a href=\"$self?cid=$cid\">$Name</a>\n"; |
|
if (exists $stat{$cid}) { |
|
$res .= " ($stat{$cid})\n"; |
|
} |
|
$result .= li($res); |
} |
} |
$result .= "</dl></dd></dl>\n"; |
$result .= "</ul>\n"; |
} |
} |
|
|
|
|
Line 320 sub ListParents {
|
Line 380 sub ListParents {
|
my $sth; |
my $sth; |
|
|
$sth = $args{'dbh'}->prepare(" |
$sth = $args{'dbh'}->prepare(" |
SELECT Parent FROM ClubClub WHERE Child=$args{'cid'}"); |
SELECT Parent, Status FROM ClubClub WHERE Child=$args{'cid'}"); |
|
|
$sth->execute; |
$sth->execute; |
|
|
Line 332 SELECT Parent FROM ClubClub WHERE Child=
|
Line 392 SELECT Parent FROM ClubClub WHERE Child=
|
|
|
$result=<<END; |
$result=<<END; |
<h3>Коллективный член ассоциаций:</h3> |
<h3>Коллективный член ассоциаций:</h3> |
<dd><dl>\n |
<dl>\n |
END |
END |
|
|
my @clubs=(); |
my @clubs=(); |
while (my ($club)=$sth->fetchrow_array) { |
my %stat=(); |
|
while (my ($club,$status)=$sth->fetchrow_array) { |
push @clubs,"cid=$club"; |
push @clubs,"cid=$club"; |
|
if ($status) { |
|
$stat{$club}=$status; |
|
} |
} |
} |
my $clause = join(' OR ', @clubs); |
my $clause = join(' OR ', @clubs); |
$sth=$args{'dbh'}->prepare(" |
$sth=$args{'dbh'}->prepare(" |
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 .= dt("<a href=\"$self?cid=$cid\">$Name</a>\n"); |
my $res = "<a href=\"$self?cid=$cid\">$Name</a>\n"; |
|
if (exists $stat{$cid}) { |
|
$res .= " ($stat{$cid})\n"; |
|
} |
|
$result .= dt($res); |
} |
} |
$result .= "</dl></dd></dl>\n"; |
$result .= "</dl></dd></dl>\n"; |
} |
} |
Line 461 sub htmlize {
|
Line 529 sub htmlize {
|
sub ListPeople { |
sub ListPeople { |
my %args = @_; |
my %args = @_; |
my $sth = $args{'dbh'}->prepare(" |
my $sth = $args{'dbh'}->prepare(" |
SELECT pid,Position FROM ClubPeople WHERE cid=$args{'cid'} ORDER BY Weight DESC"); |
SELECT a.pid,a.Position FROM ClubPeople=a,People=b WHERE a.cid=$args{'cid'} and a.pid=b.pid ORDER BY a.Weight Desc, b.Name"); |
$sth->execute; |
$sth->execute; |
|
|
if (!$sth->rows) { |
if (!$sth->rows) { |
Line 489 SELECT * FROM People WHERE pid=$args{'pi
|
Line 557 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 500 SELECT * FROM People WHERE pid=$args{'pi
|
Line 574 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 516 SELECT * FROM People WHERE pid=$args{'pi
|
Line 590 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 665 sub AddClub {
|
Line 757 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', Вы отправите Вашу регистрационную |
карточку службе поддержки регистра. Пожалуйста, подождите несколько дней, пока |
карточку службе поддержки регистра. Пожалуйста, подождите несколько дней, пока |
Ваша информация будет обработана и попадёт в регистр"); |
Ваша информация будет обработана и попадёт в регистр"); |
Line 677 sub AddClub {
|
Line 779 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 700 END
|
Line 799 END
|
"обработки будут внесены в базу данных"); |
"обработки будут внесены в базу данных"); |
} |
} |
|
|
|
############################################################### |
|
# 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; |
|
} |