| … | |
… | |
| 51 | my $userName = $r->param('user'); |
51 | my $userName = $r->param('user'); |
| 52 | my $effectiveUserName = $r->param('effectiveUser'); |
52 | my $effectiveUserName = $r->param('effectiveUser'); |
| 53 | |
53 | |
| 54 | my $user = $db->getUser($userName); |
54 | my $user = $db->getUser($userName); |
| 55 | my $effectiveUser = $db->getUser($effectiveUserName); |
55 | my $effectiveUser = $db->getUser($effectiveUserName); |
|
|
56 | # obtain the effective user set, or if that is not yet defined obtain global set |
| 56 | my $set = $db->getGlobalUserSet($effectiveUserName, $setName); |
57 | my $set = $db->getGlobalUserSet($effectiveUserName, $setName); |
|
|
58 | $set = $db->getGlobalSet($setName) unless defined($set); |
|
|
59 | # obtain the effective user problem, or if that is not yet defined obtain global problem |
| 57 | my $problem = $db->getGlobalUserProblem($effectiveUserName, $setName, $problemNumber); |
60 | my $problem = $db->getGlobalUserProblem($effectiveUserName, $setName, $problemNumber); |
|
|
61 | $problem = $db->getGlobalProblem($setName, $problemNumber) unless defined($problem); |
|
|
62 | # FIXME |
|
|
63 | # a better solution at this point would be to take set and problem, convert them to global_user type |
|
|
64 | # so that they have the right methods. |
|
|
65 | # Stuff the local copy of $set and $problem with default data where it won't have been defined |
|
|
66 | # Make sure that nothing bad is stored back in the database. |
|
|
67 | # It would be nice to store lastAnswer somewhere -- perhaps that could be done as a special case. |
|
|
68 | |
|
|
69 | # This supplies a psvn if $set doesn't have it. Unfortunately the problem is called on to provide |
|
|
70 | # data in many places and it might not even have methods defined. |
|
|
71 | |
|
|
72 | # global sets will not have a defined psvn |
|
|
73 | my $psvn; |
|
|
74 | if ($set->can('psvn') ) { |
| 58 | my $psvn = $set->psvn(); |
75 | $psvn = $set->psvn(); |
|
|
76 | } else { # we are viewing an unassigned problem set, psvn's are irrelevant |
|
|
77 | $psvn = '0000'; |
|
|
78 | } |
|
|
79 | |
| 59 | my $permissionLevel = $db->getPermissionLevel($userName)->permission(); |
80 | my $permissionLevel = $db->getPermissionLevel($userName)->permission(); |
| 60 | |
81 | |
| 61 | $self->{userName} = $userName; |
82 | $self->{userName} = $userName; |
| 62 | $self->{user} = $user; |
83 | $self->{user} = $user; |
| 63 | $self->{effectiveUser} = $effectiveUser; |
84 | $self->{effectiveUser} = $effectiveUser; |