| … | |
… | |
| 19 | use WeBWorK::Form; |
19 | use WeBWorK::Form; |
| 20 | use WeBWorK::PG; |
20 | use WeBWorK::PG; |
| 21 | use WeBWorK::PG::IO; |
21 | use WeBWorK::PG::IO; |
| 22 | use WeBWorK::Utils qw(writeLog encodeAnswers decodeAnswers ref2string makeTempDirectory); |
22 | use WeBWorK::Utils qw(writeLog encodeAnswers decodeAnswers ref2string makeTempDirectory); |
| 23 | use WeBWorK::DB::Utils qw(global2user user2global findDefaults); |
23 | use WeBWorK::DB::Utils qw(global2user user2global findDefaults); |
| 24 | |
24 | use WeBWorK::Timing; |
| 25 | ############################################################ |
25 | ############################################################ |
| 26 | # |
26 | # |
| 27 | # user |
27 | # user |
| 28 | # effectiveUser |
28 | # effectiveUser |
| 29 | # key |
29 | # key |
| … | |
… | |
| 292 | |
292 | |
| 293 | my $ce = $self->{ce}; |
293 | my $ce = $self->{ce}; |
| 294 | my $db = $self->{db}; |
294 | my $db = $self->{db}; |
| 295 | my $root = $ce->{webworkURLs}->{root}; |
295 | my $root = $ce->{webworkURLs}->{root}; |
| 296 | my $courseName = $ce->{courseName}; |
296 | my $courseName = $ce->{courseName}; |
| 297 | |
297 | my $timer0 = WeBWorK::Timing->new("time siblings"); |
|
|
298 | $timer0->start; |
| 298 | print CGI::strong("Problems"), CGI::br(); |
299 | print CGI::strong("Problems"), CGI::br(); |
| 299 | |
300 | |
| 300 | my $effectiveUser = $self->{r}->param("effectiveUser"); |
301 | my $effectiveUser = $self->{r}->param("effectiveUser"); |
| 301 | my @problems; |
302 | my @problems; |
| 302 | push @problems, $db->getMergedProblem($effectiveUser, $setName, $_) |
303 | # push @problems, $db->getMergedProblem($effectiveUser, $setName, $_) |
| 303 | foreach ($db->listUserProblems($effectiveUser, $setName)); |
304 | # foreach ($db->listUserProblems($effectiveUser, $setName)); |
|
|
305 | @problems = $db->listUserProblems($effectiveUser, $setName); # this is much faster |
| 304 | foreach my $problem (sort { $a->problem_id <=> $b->problem_id } @problems) { |
306 | # foreach my $problem (sort { $a->problem_id <=> $b->problem_id } @problems) { |
|
|
307 | foreach my $problem (sort { $a <=> $b } @problems) { |
| 305 | print CGI::a({-href=>"$root/$courseName/$setName/".$problem->problem_id."/?" |
308 | print CGI::a({-href=>"$root/$courseName/$setName/".$problem."/?" |
| 306 | . $self->url_authen_args . "&displayMode=" . $self->{displayMode}}, |
309 | . $self->url_authen_args . "&displayMode=" . $self->{displayMode}}, |
| 307 | "Problem ".$problem->problem_id), CGI::br(); |
310 | "Problem ".$problem), CGI::br(); |
| 308 | } |
311 | } |
|
|
312 | $timer0->stop; |
|
|
313 | $timer0->save; |
|
|
314 | ''; |
| 309 | } |
315 | } |
| 310 | |
316 | |
| 311 | sub nav { |
317 | sub nav { |
| 312 | my $self = shift; |
318 | my $self = shift; |
| 313 | my $args = $_[-1]; |
319 | my $args = $_[-1]; |