version 1.3, 1999/10/14 18:47:01
|
version 1.8, 2000/03/22 21:08:02
|
Line 1
|
Line 1
|
#!/usr/ucb/perl |
#!/usr/ucb/perl |
# |
# |
# CAPA Discussion Forum |
# CAPA Discussion Forum |
# version 1.3 |
# version 1.3.0 |
# |
# |
# Michigan State University |
# Michigan State University |
# Department of Physics and Astronomy |
# Department of Physics and Astronomy |
# |
# |
# Ryan J. Shaltry |
# Ryan J. Shaltry |
# tech4@msue.msu.edu |
# tech4@msue.msu.edu |
|
# Guy Albertelli |
|
# albertel@msu.edu |
|
|
print "Content-type: text/html\n\n"; |
print "Content-type: text/html\n\n"; |
|
|
Line 49 $validadmin = "unchecked";
|
Line 51 $validadmin = "unchecked";
|
$psetid = $form{'PSETID'}; |
$psetid = $form{'PSETID'}; |
if ($snum eq "A12345678") {$debug=1;} |
if ($snum eq "A12345678") {$debug=1;} |
if ($snum eq "a12345678") {$debug=1;} |
if ($snum eq "a12345678") {$debug=1;} |
|
$debug=0; |
if($psetid eq "") { $psetid = $setid; } |
if($psetid eq "") { $psetid = $setid; } |
if ($debug) {print "GetTeacherInfo<BR>";$BenchmarkTa = new Benchmark;} |
if ($debug) {print "GetTeacherInfo<BR>";$BenchmarkTa = new Benchmark;} |
&GetTeacherInfo; |
&GetTeacherInfo; |
if($debug) {$BenchmarkTb = new Benchmark;print "<BR>",timestr(timediff($BenchmarkTb,$BenchmarkTa)),"\n";} |
if($debug) {$BenchmarkTb = new Benchmark;print "<BR>",timestr(timediff($BenchmarkTb,$BenchmarkTa)),"\n";} |
|
|
|
# check if student is banned from forum |
|
if ($debug) {print "BanUser<BR>";$BenchmarkTa = new Benchmark;} |
|
if (&BanUser) {exit;} |
|
if($debug) {$BenchmarkTb = new Benchmark;print "<BR>",timestr(timediff($BenchmarkTb,$BenchmarkTa)),"\n";} |
|
|
# check for valid studentnumber/capaid, an exit will occur here if the set wasn't open |
# check for valid studentnumber/capaid, an exit will occur here if the set wasn't open |
if ($debug) {print "ValidateUser<BR>";$BenchmarkTa = new Benchmark;} |
if ($debug) {print "ValidateUser<BR>";$BenchmarkTa = new Benchmark;} |
&ValidateUser; |
&ValidateUser; |
Line 170 if($debug) {$BenchmarkTb = new Benchmark
|
Line 178 if($debug) {$BenchmarkTb = new Benchmark
|
} |
} |
|
|
sub ViewSet { |
sub ViewSet { |
|
local($hidden); |
if ($debug) {print "InsideViewSet<BR>";$BenchmarkTa = new Benchmark;} |
if ($debug) {print "InsideViewSet<BR>";$BenchmarkTa = new Benchmark;} |
&Log("ViewSet"); |
&Log("ViewSet"); |
&CheckAdmin; |
&CheckAdmin; |
Line 213 if($debug) {$BenchmarkTb = new Benchmark
|
Line 222 if($debug) {$BenchmarkTb = new Benchmark
|
|
|
$col = 1; |
$col = 1; |
for($probnum=1; $probnum<=$maxprobs; $probnum++) { |
for($probnum=1; $probnum<=$maxprobs; $probnum++) { |
|
$hidden=0; |
if($col eq "1" && $probnum > $col1size && $bigtable eq "yes") { |
if($col eq "1" && $probnum > $col1size && $bigtable eq "yes") { |
$col = 2; |
$col = 2; |
&ViewSetEndColHTML; |
&ViewSetEndColHTML; |
Line 224 if($debug) {$BenchmarkTb = new Benchmark
|
Line 234 if($debug) {$BenchmarkTb = new Benchmark
|
closedir(MSG); |
closedir(MSG); |
foreach $msg(@msgs) { |
foreach $msg(@msgs) { |
if(&RemZero(substr($msg,0,6)) eq $probnum) { |
if(&RemZero(substr($msg,0,6)) eq $probnum) { |
push(@good,$msg); |
&OpenMsg("$capadir/$class/discussion/$setid/$msg"); |
|
if(!($status eq "hidden" && $validadmin ne "yes")) { |
|
push(@good,$msg); |
|
} else { $hidden++; } |
} |
} |
} |
} |
|
$posts = $found[$probnum]-$hidden; |
&OpenMsg("$capadir/$class/discussion/$setid/$good[$#good]"); |
if ($posts >0) { |
$lastpost = "$date at $time"; |
&OpenMsg("$capadir/$class/discussion/$setid/$good[$#good]"); |
$posts = $found[$probnum]; |
$lastpost = "$date at $time"; |
|
} else { |
|
$lastpost = "--"; |
|
} |
} |
} |
else { |
else { |
$lastpost = "--"; |
$lastpost = "--"; |
Line 327 sub ViewProblem {
|
Line 343 sub ViewProblem {
|
$hidebutton = &UnHideButtonHTML; |
$hidebutton = &UnHideButtonHTML; |
$messagenote = "Hidden by $hiddenuser on $hiddendate at $hiddentime from $hiddenaddr"; |
$messagenote = "Hidden by $hiddenuser on $hiddendate at $hiddentime from $hiddenaddr"; |
} |
} |
$message =~ s/</</g; |
# $message =~ s/</</g; |
$message =~ s/>/>/g; |
# $message =~ s/>/>/g; |
&ViewProblemGutsHTML; |
&ViewProblemGutsHTML; |
} |
} |
} |
} |
Line 349 sub ViewProblem {
|
Line 365 sub ViewProblem {
|
} |
} |
|
|
sub ViewInfoFile { |
sub ViewInfoFile { |
|
&Log("InfoFile"); |
open(INFOFILE,"$capadir/$class/discussion/$file"); |
open(INFOFILE,"$capadir/$class/discussion/$file"); |
@file = <INFOFILE>; |
@file = <INFOFILE>; |
closedir(INFOFILE); |
closedir(INFOFILE); |
Line 581 sub WriteMsg {
|
Line 598 sub WriteMsg {
|
$filename = shift(@_); |
$filename = shift(@_); |
# add sr to grab e-mail address of user |
# add sr to grab e-mail address of user |
|
|
|
|
|
# <B> <I> <P> <A> <LI> <OL> <UL> <EM> <BR> <TT> <STRONG> <BLOCKQUOTE> <DIV .*> <DIV> <IMG> |
|
%html=(B=>1, I=>1, P=>1, A=>1, LI=>1, OL=>1, UL=>1, EM=>1, BR=>1, TT=>1, STRONG=>1, |
|
BLOCKQUOTE=>1, DIV=>1, IMG=>1); |
|
|
$message = $form{'message'}; |
$message = $form{'message'}; |
$message =~ s/\n\r\n/<p>/g; |
|
|
$message =~ s/((\n\r)|(\n))\n/<p>/g; |
$message =~ s/\n/<br>/g; |
$message =~ s/\n/<br>/g; |
|
|
|
$message =~ s/\<(\/?\s*(\w+)[^\>\<]*)/ |
|
{($html{uc($2)}&(length($1)<1000))?"\<$1":"\<$1"}/ge; |
|
$message =~ s/(\<?\s*(\w+)[^\<\>]*)\>/ |
|
{($html{uc($2)}&(length($1)<1000))?"$1\>":"$1\>"}/ge; |
|
|
|
# $message =~ s/</</g; |
|
# $message =~ s/>/>/g; |
|
|
# check if posted anonymously |
# check if posted anonymously |
if($form{'ANONYMOUS'} eq "yes") { |
if($form{'ANONYMOUS'} eq "yes") { |
$username = "Anonymous|$username"; |
$username = "Anonymous|$username"; |
Line 643 sub CheckAdmin {
|
Line 674 sub CheckAdmin {
|
last; |
last; |
} |
} |
} |
} |
|
if ($debug) { print "Admin Sections: ".$adminsection;} |
@adminsections = split(/\,/,$adminsection); |
@adminsections = split(/\,/,$adminsection); |
for ($asection=0; $asection <= $#adminsections; $asection++) { |
for ($asection=0; $asection <= $#adminsections; $asection++) { |
$adminsections[$asection]=&RemZero($adminsections[$asection]) |
$adminsections[$asection]=&RemZero($adminsections[$asection]) |
Line 654 sub CheckAdmin {
|
Line 686 sub CheckAdmin {
|
|
|
$snum =~ tr/a-z/A-Z/; |
$snum =~ tr/a-z/A-Z/; |
LINE: foreach $line(@classl) { |
LINE: foreach $line(@classl) { |
($course,$coursenum,$section,$stunum,$a) = split(/\ +/,$line); |
$section= substr $line, 10, 3; |
|
$stunum= substr $line, 14, 9; |
$stunum =~ tr/a-z/A-Z/; |
$stunum =~ tr/a-z/A-Z/; |
if ( $stunum ne $snum ) { next LINE;} |
if ( $stunum ne $snum ) { next LINE;} |
$section = &RemZero($section); |
$section = &RemZero($section); |
|
if ($debug) {print "<BR>".$stunum."Is in section:".$section."<BR>";} |
foreach $asection(@adminsections) { |
foreach $asection(@adminsections) { |
if($section eq $asection ) { |
if($section eq $asection ) { |
$validadmin = "yes"; |
$validadmin = "yes"; |
Line 669 sub CheckAdmin {
|
Line 703 sub CheckAdmin {
|
if($validadmin eq "no" && $mode eq "kill") { &NotAdminHTML; } |
if($validadmin eq "no" && $mode eq "kill") { &NotAdminHTML; } |
} |
} |
|
|
|
sub BanUser { |
|
local (@capaconfig,$line,$command,$value,$ban,@banned,$result); |
|
$result = 0; |
|
open(CAPACONFIG,"$capadir/$class/capa.config"); |
|
@capaconfig = <CAPACONFIG>; |
|
close(CAPACONFIG); |
|
foreach $line(@capaconfig) { |
|
chop $line; |
|
($command,$value) = split(/\ =\ /,$line); |
|
if($command eq "banned_users") { $ban = $value; last; } |
|
} |
|
|
|
if ($debug) { print "Banned Users: ".$ban } |
|
@banned = split(/\,/,$ban); |
|
$snum =~ tr/a-x/A-Z/; |
|
foreach $ban (@banned) { |
|
if ($debug) {print $ban . "is Banned <br>";} |
|
$ban =~ tr/a-z/A-Z/; |
|
$ban =~ tr/\ //d; |
|
if ( $ban eq $snum) { &BannedMessageHTML; $result=1 } |
|
} |
|
return $result |
|
} |
|
|
sub ValidateUser { |
sub ValidateUser { |
local(@allcapaid,@classl,$line); |
local(@allcapaid,@classl,$line); |
|
|
Line 685 sub ValidateUser {
|
Line 743 sub ValidateUser {
|
if($valid eq "no") { &InvalidVarsHTML; } |
if($valid eq "no") { &InvalidVarsHTML; } |
|
|
# check w/ allcapaid program |
# check w/ allcapaid program |
@allcapaid = `allcapaid51 -s $setid -e $setid -stu $snum -c $capadir/$class -i -checkopen`; |
@allcapaid = `allcapaid -s $setid -e $setid -stu $snum -c $capadir/$class -i -checkopen`; |
|
|
chop $allcapaid[2]; |
chop $allcapaid[2]; |
chop $allcapaid[2]; |
chop $allcapaid[2]; |
Line 790 sub form_info {
|
Line 848 sub form_info {
|
|
|
foreach $pair (@pairs) { |
foreach $pair (@pairs) { |
($name, $value) = split(/=/, $pair); |
($name, $value) = split(/=/, $pair); |
|
if ($name eq "message") {$allow_html=1;} else {$allow_html=0;} |
# Un-Webify plus signs and %-encoding |
# Un-Webify plus signs and %-encoding |
$value =~ tr/+/ /; |
$value =~ tr/+/ /; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; |
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; |
Line 810 sub GetDateTime {
|
Line 868 sub GetDateTime {
|
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime (time); |
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime (time); |
$mon++; |
$mon++; |
|
|
|
$year=$year+1900; |
|
|
if ($hour < 12) { |
if ($hour < 12) { |
$AMPM = "AM"; |
$AMPM = "AM"; |
} |
} |
Line 847 sub Log {
|
Line 907 sub Log {
|
|
|
&Lock("lock.file"); |
&Lock("lock.file"); |
open(LOG,">>$capadir/$class/discussion/logs/access.log"); |
open(LOG,">>$capadir/$class/discussion/logs/access.log"); |
print LOG "$snum|$capaid|$username|$email|$logmsg|$setid|$probnum|$HyphenDate|$Time\n"; |
print LOG "$snum|$capaid|$username|$email|$logmsg|$setid|$probnum|$HyphenDate|$Time|$file\n"; |
close(LOG); |
close(LOG); |
&Unlock("lock.file"); |
&Unlock("lock.file"); |
} |
} |