[system] / trunk / webwork2 / lib / WeBWorK / ContentGenerator / Instructor.pm Repository:
ViewVC logotype

Diff of /trunk/webwork2/lib/WeBWorK/ContentGenerator/Instructor.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1014 Revision 1015
38 } 38 }
39 39
40 return $message; 40 return $message;
41} 41}
42 42
43### Utility functions for assigning sets to users.
44# These silently fail if the problem or set exists for the user.
45
43sub assignProblemToUser { 46sub assignProblemToUser {
44 my ($self, $user, $globalProblem) = @_; 47 my ($self, $user, $globalProblem) = @_;
45 my $db = $self->{db}; 48 my $db = $self->{db};
46 my $userProblem = $db->{problem_user}->{record}->new; 49 my $userProblem = $db->{problem_user}->{record}->new;
50
47 # Set up the key 51 # Set up the key
48 $userProblem->user_id($user); 52 $userProblem->user_id($user);
49 $userProblem->set_id($globalProblem->set_id); 53 $userProblem->set_id($globalProblem->set_id);
50 $userProblem->problem_id($globalProblem->problem_id); 54 $userProblem->problem_id($globalProblem->problem_id);
51 55
55 $userProblem->num_correct(0); 59 $userProblem->num_correct(0);
56 $userProblem->num_incorrect(0); 60 $userProblem->num_incorrect(0);
57 $userProblem->attempted(0); 61 $userProblem->attempted(0);
58 $userProblem->problem_seed(int(rand(5000))); 62 $userProblem->problem_seed(int(rand(5000)));
59 63
60 $db->addUserProblem($userProblem); 64 eval {$db->addUserProblem($userProblem)};
61} 65}
62 66
63sub assignSetToUser { 67sub assignSetToUser {
64 my ($self, $user, $globalSet) = @_; 68 my ($self, $user, $globalSet) = @_;
65 my $db = $self->{db}; 69 my $db = $self->{db};
66 my $userSet = $db->{set_user}->{record}->new; 70 my $userSet = $db->{set_user}->{record}->new;
67 my $setID = $globalSet->set_id; 71 my $setID = $globalSet->set_id;
68 72
69 $userSet->user_id($user); 73 $userSet->user_id($user);
70 $userSet->set_id($setID); 74 $userSet->set_id($setID);
71 $db->addUserSet($userSet); 75 eval {$db->addUserSet($userSet)};
72 76
73 foreach my $problemID ($db->listGlobalProblems) { 77 foreach my $problemID ($db->listGlobalProblems) {
74 my $problemRecord = $db->getGlobalProblem($setID, $problemID); 78 my $problemRecord = $db->getGlobalProblem($setID, $problemID);
75 $self->assignProblemToUser($user, $problemRecord); 79 $self->assignProblemToUser($user, $problemRecord);
76 } 80 }
82# of a set. 86# of a set.
83sub assignProblemToAllUsers { 87sub assignProblemToAllUsers {
84 my ($self, $globalProblem) = @_; 88 my ($self, $globalProblem) = @_;
85 my $db = $self->{db}; 89 my $db = $self->{db};
86 my $setID = $globalProblem->set_id; 90 my $setID = $globalProblem->set_id;
87 my @users = $db->listSetUsers($setID); 91 my @users = $db->listSetUsers;
88 92
89 foreach my $user (@users) { 93 foreach my $user (@users) {
90 $self->assignProblemToUser($user, $globalProblem); 94 $self->assignProblemToUser($user, $globalProblem);
95 }
96}
97
98# READ THIS: Unlike the above function, "All" here refers to all of the
99# users of a course.
100# This function caches database data as a speed optimization.
101sub assignSetToAllUsers {
102 my ($self, $setID) = @_;
103 my $db = $self->{db};
104 my @problems = ();
105 my @users = $db->listUsers($setID);
106 my @problemRecords = map {$db->getGlobalProblem($setID, $_)} $db->listGlobalProblems($setID);
107
108 foreach my $user (@users) {
109 # FIXME: Create a UserSet record for the user!!!!
110 my $userSet = $db->{set_user}->{record}->new;
111 $userSet->user_id($user);
112 $userSet->set_id($setID);
113 eval {$db->addUserSet($userSet)};
114 foreach my $problemRecord (@problemRecords) {
115 $self->assignProblemToUser($user, $problemRecord);
116 }
91 } 117 }
92} 118}
93 119
94## Template Escapes ## 120## Template Escapes ##
95 121

Legend:
Removed from v.1014  
changed lines
  Added in v.1015

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9