#!/usr/sww/bin/perl -w use User::pwent; $whoami = getpwuid($<)->name; ($master) = $whoami =~ /^([^\-]*)/; $ENV{'PATH'} = '/bin:/usr/bin:/usr/ucb:/usr/local/bin'; $ENV{'USER'} = $whoami; $ENV{'HOME'} = getpwnam($whoami)->dir; $ENV{'MASTER'} = $master; $ENV{'MASTERDIR'} = getpwnam($master)->dir; unshift(@INC, "$ENV{'MASTERDIR'}/groups/perl"); require "cgi.pl"; require "groups.pl"; sub LoginAssgn { $login = $input{"login"}; if (!($login =~ /^[a-z]{2}$/)) { CgiError("Invalid login: $COURSE-$login"); } LoadRegistrations(); if (!defined($loginreg{$login})) { CgiError("$COURSE-$login is not registered; run register"); } $assgn = $input{"assgn"}; if (!exists($EVALASSIGNMENTS{$assgn})) { CgiError("Bad assignment $assgn"); } LoadDB($assgn); $group = $logintable{$assgn}{$login}; if (!defined($group)) { CgiError("Unable to determine your group"); } @partners = keys %{$grouptable{$assgn}{$group}}; $numpartners = scalar(@partners); if ($numpartners < 2 || grep(!/^[a-z]{2}$/, @partners)) { CgiError("Invalid information in group table"); } $totalpoints = 20*($numpartners-1); } sub Ratings { my $totalscore = 0; foreach my $i (1 ... $numpartners-1) { my $elogin = $input{"login$i"}; my $escore = $input{"score$i"}; if (!defined($elogin) || !($elogin =~ /^[a-z]{2}$/)) { CgiError("Invalid login $COURSE-$elogin on row $i\n"); } if (!defined($escore) || !($escore =~ /^[0-9]+$/) || $escore < 0 || $escore > $totalpoints) { CgiError("Invalid score $escore on row $i\n"); } if (!grep($_ eq $elogin, @partners)) { CgiError("$COURSE-$elogin is not a member of group $group\n"); } if (grep($_ eq $elogin, keys %evaluations)) { CgiError("$COURSE-$elogin evaluated twice\n"); } $evaluations{$elogin} = $escore; $totalscore += $escore; } if ($totalscore != $totalpoints) { CgiError("Your scores do not add to $totalpoints"); } } CgiMode(); if (!CgiGetArgs()) { CgiStart();#"Group Evaluation Form (Step 1)"); print "
\n"; CgiEnd(); } elsif ($input{"step"} == 2) { LoginAssgn(); CgiStart();#"Group Evaluation Form (Step 2)"); print "Login | $COURSE-$login |
Assignment | $assgn |
Group | $group |
Group Size | $numpartners members |
Your evaluation is complete. A confirmation message has been\n"; print "sent to $COURSE-$login\n"; CgiEnd(); } else { CgiError();#"Unable to determine step"); }