| … | |
… | |
| 20 | use WeBWorK::ContentGenerator; |
20 | use WeBWorK::ContentGenerator; |
| 21 | use WeBWorK::DB::WW; |
21 | use WeBWorK::DB::WW; |
| 22 | use WeBWorK::DB::Classlist; |
22 | use WeBWorK::DB::Classlist; |
| 23 | |
23 | |
| 24 | sub initialize { |
24 | sub initialize { |
| 25 | my $self = shift; |
25 | my ($self, $setName) = @_; |
| 26 | my $courseEnvironment = $self->{courseEnvironment}; |
26 | my $courseEnvironment = $self->{courseEnvironment}; |
|
|
27 | my $r = $self->{r}; |
|
|
28 | my $userName = $r->param("user"); |
|
|
29 | my $effectiveUserName = $r->param("effectiveUser"); |
| 27 | |
30 | |
| 28 | # Open a database connection that we can use for the rest of |
31 | ##### database setup ##### |
| 29 | # the content generation. |
|
|
| 30 | |
32 | |
| 31 | $self->{wwdb} = WeBWorK::DB::WW->new($courseEnvironment); |
|
|
| 32 | $self->{cldb} = WeBWorK::DB::Classlist->new($courseEnvironment); |
33 | my $cldb = WeBWorK::DB::Classlist->new($courseEnvironment); |
|
|
34 | my $wwdb = WeBWorK::DB::WW->new($courseEnvironment); |
|
|
35 | my $authdb = WeBWorK::DB::Auth->new($courseEnvironment); |
|
|
36 | |
|
|
37 | my $user = $cldb->getUser($userName); |
|
|
38 | my $effectiveUser = $cldb->getUser($effectiveUserName); |
|
|
39 | my $set = $wwdb->getSet($effectiveUserName, $setName); |
|
|
40 | my $permissionLevel = $authdb->getPermissions($userName); |
|
|
41 | |
|
|
42 | $self->{cldb} = $cldb; |
|
|
43 | $self->{wwdb} = $wwdb; |
|
|
44 | $self->{authdb} = $authdb; |
|
|
45 | |
|
|
46 | $self->{userName} = $userName; |
|
|
47 | $self->{user} = $user; |
|
|
48 | $self->{effectiveUser} = $effectiveUser; |
|
|
49 | $self->{set} = $set; |
|
|
50 | $self->{permissionLevel} = $permissionLevel; |
|
|
51 | |
|
|
52 | ##### permissions ##### |
|
|
53 | |
|
|
54 | $self->{isOpen} = time >= $set->open_date || $permissionLevel > 0; |
| 33 | } |
55 | } |
| 34 | |
56 | |
| 35 | sub path { |
57 | sub path { |
| 36 | my ($self, $setName, $args) = @_; |
58 | my ($self, $setName, $args) = @_; |
| 37 | |
59 | |
| … | |
… | |
| 77 | sub info { |
99 | sub info { |
| 78 | my ($self, $setName) = @_; |
100 | my ($self, $setName) = @_; |
| 79 | |
101 | |
| 80 | my $r = $self->{r}; |
102 | my $r = $self->{r}; |
| 81 | my $ce = $self->{courseEnvironment}; |
103 | my $ce = $self->{courseEnvironment}; |
|
|
104 | |
|
|
105 | return "" unless $self->{isOpen}; |
| 82 | |
106 | |
| 83 | my $wwdb = $self->{wwdb}; |
107 | my $wwdb = $self->{wwdb}; |
| 84 | my $cldb = $self->{cldb}; |
108 | my $cldb = $self->{cldb}; |
| 85 | my $effectiveUser = $cldb->getUser($r->param("effectiveUser")); |
109 | my $effectiveUser = $cldb->getUser($r->param("effectiveUser")); |
| 86 | my $set = $wwdb->getSet($effectiveUser->id, $setName); |
110 | my $set = $wwdb->getSet($effectiveUser->id, $setName); |
| … | |
… | |
| 129 | my $r = $self->{r}; |
153 | my $r = $self->{r}; |
| 130 | my $courseEnvironment = $self->{courseEnvironment}; |
154 | my $courseEnvironment = $self->{courseEnvironment}; |
| 131 | my $effectiveUser = $r->param('effectiveUser'); |
155 | my $effectiveUser = $r->param('effectiveUser'); |
| 132 | my $wwdb = $self->{wwdb}; |
156 | my $wwdb = $self->{wwdb}; |
| 133 | |
157 | |
|
|
158 | return CGI::p(CGI::font({-color=>"red"}, "This problem set is not available because it is not yet open.")) |
|
|
159 | unless ($self->{isOpen}); |
|
|
160 | |
| 134 | my $hardcopyURL = |
161 | my $hardcopyURL = |
| 135 | $courseEnvironment->{webworkURLs}->{root} . "/" |
162 | $courseEnvironment->{webworkURLs}->{root} . "/" |
| 136 | . $courseEnvironment->{courseName} . "/" |
163 | . $courseEnvironment->{courseName} . "/" |
| 137 | . "hardcopy/$setName/?" . $self->url_authen_args; |
164 | . "hardcopy/$setName/?" . $self->url_authen_args; |
| 138 | print CGI::p(CGI::a({-href=>$hardcopyURL}, "Download a hardcopy"), |
165 | print CGI::p(CGI::a({-href=>$hardcopyURL}, "Download a hardcopy"), |