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

Annotation of /trunk/webwork2/lib/WeBWorK/DB.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 775 - (view) (download) (as text)

1 : sh002i 775 ################################################################################
2 :     # WeBWorK mod_perl (c) 2000-2002 WeBWorK Project
3 :     # $Id$
4 :     ################################################################################
5 :    
6 :     package WeBWorK::DB;
7 :    
8 :     =head1 NAME
9 :    
10 :     WeBWorK::DB - interface with the WeBWorK databases (WWDBv2).
11 :    
12 :     =cut
13 :    
14 :     use strict;
15 :     use warnings;
16 :     use WeBWorK::Utils qw(runtime_use);
17 :    
18 :     use constant TABLES => qw(password permission user set set_user problem problem_user);
19 :    
20 :     ################################################################################
21 :     # constructor
22 :     ################################################################################
23 :    
24 :     sub new($$) {
25 :     my $invocant = shift;
26 :     my $class = ref($invocant) || $invocant;
27 :     my $ce = shift;
28 :    
29 :     # load the modules required to handle each table, and create driver
30 :     foreach my $table (TABLES) {
31 :     die "Layout for table $table not specified in dbLayout.\n"
32 :     unless defined $ce->{dbLayout}->{$table};
33 :    
34 :     my $layout = $ce->{dbLayout}->{$table};
35 :     my $schema = $layout->{schema};
36 :     my $driver = $layout->{driver};
37 :     my $source = $layout->{source};
38 :    
39 :     runtime_use($schema, $driver);
40 :     $self->{$table} = $schema->new($driver->new($source), $table);
41 :     }
42 :    
43 :     bless $self, $class;
44 :     return $self;
45 :     }
46 :    
47 :     ################################################################################
48 :     # password functions
49 :     ################################################################################
50 :    
51 :     sub listPasswords($) {
52 :     my ($self) = @_;
53 :     return $self->{password}->list();
54 :     }
55 :    
56 :     sub newPassword($$) {
57 :     my ($self, $Password) = @_;
58 :     die "newPassword failed: user ", $Password->user_id, " does not exist.\n"
59 :     unless $self->{user}->exists($Password->user_id);
60 :     return $self->{password}->add($Password);
61 :     }
62 :    
63 :     sub getPassword($$) {
64 :     my ($self, $userID) = @_;
65 :     return $self->{password}->get($userID);
66 :     }
67 :    
68 :     sub putPassword($$) {
69 :     my ($self, $Password) = @_;
70 :     return $self->{password}->put($Password);
71 :     }
72 :    
73 :     sub deletePassword($$) {
74 :     my ($self, $userID) = @_;
75 :     return $self->{password}->delete($userID);
76 :     }
77 :    
78 :     ################################################################################
79 :     # permission functions
80 :     ################################################################################
81 :    
82 :     sub listPermissionLevels($) {
83 :     my ($self) = @_;
84 :     return $self->{permission}->list();
85 :     }
86 :    
87 :     sub newPermissionLevel($$) {
88 :     my ($self, $PermissionLevel) = @_;
89 :     die "newPermissionLevel failed: user ", $PermissionLevel->user_id, " does not exist.\n"
90 :     unless $self->{user}->exists($PermissionLevel->user_id);
91 :     return $self->{permission}->add($PermissionLevel);
92 :     }
93 :    
94 :     sub getPermissionLevel($$) {
95 :     my ($self, $userID) = @_;
96 :     return $self->{permission}->get($userID);
97 :     }
98 :    
99 :     sub putPermissionLevel($$) {
100 :     my ($self, $PermissionLevel) = @_;
101 :     return $self->{permission}->put($PermissionLevel);
102 :     }
103 :    
104 :     sub deletePermissionLevel($$) {
105 :     my ($self, $userID) = @_;
106 :     return $self->{permission}->delete($userID);
107 :     }
108 :    
109 :     ################################################################################
110 :     # key functions
111 :     ################################################################################
112 :    
113 :     sub listKeys($) {
114 :     my ($self) = @_;
115 :     return $self->{key}->list();
116 :     }
117 :    
118 :     sub newKey($$) {
119 :     my ($self, $Key) = @_;
120 :     die "newKey failed: user ", $Key->user_id, " does not exist.\n"
121 :     unless $self->{user}->exists($Key->user_id);
122 :     return $self->{key}->add($Key);
123 :     }
124 :    
125 :     sub getKey($$) {
126 :     my ($self, $userID) = @_;
127 :     return $self->{key}->get($userID);
128 :     }
129 :    
130 :     sub putKey($$) {
131 :     my ($self, $Key) = @_;
132 :     return $self->{key}->put($Key);
133 :     }
134 :    
135 :     sub deleteKey($$) {
136 :     my ($self, $userID) = @_;
137 :     return $self->{key}->delete($userID);
138 :     }
139 :    
140 :     ################################################################################
141 :     # user functions
142 :     ################################################################################
143 :    
144 :     sub listUsers($) {
145 :     my ($self) = @_;
146 :     return $self->{user}->list();
147 :     }
148 :    
149 :     sub newUser($$) {
150 :     my ($self, $User) = @_;
151 :     return $self->{user}->add($User);
152 :     }
153 :    
154 :     sub getUser($$) {
155 :     my ($self, $userID) = @_;
156 :     return $self->{user}->get($userID);
157 :     }
158 :    
159 :     sub putUser($$) {
160 :     my ($self, $User) = @_;
161 :     return $self->{user}->put($User);
162 :     }
163 :    
164 :     sub deleteUser($$) {
165 :     my ($self, $userID) = @_;
166 :     $self->deletePassword($userID);
167 :     $self->deletePermissionLevel($userID);
168 :     $self->deleteKey($userID);
169 :     $self->deleteUserSet($userID, $_)
170 :     foreach $self->listUsers();
171 :     return $self->{user}->delete($userID);
172 :     }
173 :    
174 :     ################################################################################
175 :     # set functions
176 :     ################################################################################
177 :    
178 :     sub listGlobalSets($) {
179 :     my ($self) = @_;
180 :     return $self->{set}->list();
181 :     }
182 :    
183 :     sub newGlobalSet($$) {
184 :     my ($self, $GlobalSet) = @_;
185 :     return $self->{set}->add($GlobalSet);
186 :     }
187 :    
188 :     sub getGlobalSet($$) {
189 :     my ($self, $setID) = @_;
190 :     return $self->{set}->get($setID);
191 :     }
192 :    
193 :     sub putGlobalSet($$) {
194 :     my ($self, $GlobalSet) = @_;
195 :     return $self->{set}->put($GlobalSet);
196 :     }
197 :    
198 :     sub deleteGlobalSet($$) {
199 :     my ($self, $setID) = @_;
200 :     $self->deleteGlobalProblem($setID, $_)
201 :     foreach $self->listGlobalProblems($setID);
202 :     $self->deleteUserSet($_, $setID)
203 :     foreach $self->listUsers();
204 :     return $self->{set}->delete($setID);
205 :     }
206 :    
207 :     ################################################################################
208 :     # set_user functions
209 :     ################################################################################
210 :    
211 :     sub listUserSets($) {
212 :     my ($self, $userID) = @_;
213 :     return map { $_->[1] }
214 :     grep { $_->[0] eq $userID }
215 :     $self->{set_user}->list();
216 :     }
217 :    
218 :     sub newUserSet($$) {
219 :     my ($self, $UserSet) = @_;
220 :     die "newUserSet failed: user ", $UserSet->user_id, " does not exist.\n"
221 :     unless $self->{user}->exists($UserSet->user_id);
222 :     die "newUserSet failed: set ", $UserSet->set_id, " does not exist.\n"
223 :     unless $self->{set}->exists($UserSet->set_id);
224 :     return $self->{set_user}->add($UserSet);
225 :     }
226 :    
227 :     sub getUserSet($$) {
228 :     my ($self, $userID, $setID) = @_;
229 :     return $self->{set_user}->get($userID, $setID);
230 :     }
231 :    
232 :     sub putUserSet($$) {
233 :     my ($self, $UserSet) = @_;
234 :     return $self->{set_user}->put($UserSet);
235 :     }
236 :    
237 :     sub deleteUserSet($$) {
238 :     my ($self, $userID, $setID) = @_;
239 :     $self->deleteUserProblem($userID, $setID, $_)
240 :     foreach $self->listUserProblems($userID, $setID);
241 :     return $self->{set_user}->delete($userID, $setID);
242 :     }
243 :    
244 :     ################################################################################
245 :     # problem functions
246 :     ################################################################################
247 :    
248 :     sub listGlobalProblems($$) {
249 :     my ($self, $setID) = @_;
250 :     return map { $_->[1] }
251 :     grep { $_->[0] eq $setID }
252 :     $self->{problem}->list();
253 :     }
254 :    
255 :     sub newGlobalProblem($$) {
256 :     my ($self, $GlobalProblem) = @_;
257 :     die "newGlobalProblem failed: set ", $GlobalProblem->set_id, " does not exist.\n"
258 :     unless $self->{set}->exists($GlobalProblem->set_id);
259 :     return $self->{problem}->add($GlobalProblem);
260 :     }
261 :    
262 :     sub getGlobalProblem($$$) {
263 :     my ($self, $setID, $problemID) = @_;
264 :     return $self->{problem}->get($problemID);
265 :     }
266 :    
267 :     sub putGlobalProblem($$) {
268 :     my ($self, $GlobalProblem) = @_;
269 :     return $self->{problem}->put($GlobalProblem);
270 :     }
271 :    
272 :     sub deleteGlobalProblem($$$) {
273 :     my ($self, $setID, $problemID) = @_;
274 :     $self->deleteUserProblem($_, $setID, $problemID)
275 :     foreach $self->listUsers();
276 :     return $self->{problem}->delete($setID, $problemID);
277 :     }
278 :    
279 :     ################################################################################
280 :     # problem_user functions
281 :     ################################################################################
282 :    
283 :     sub listUserProblems($$$) {
284 :     my ($self, $userID, $setID) = @_;
285 :     return map { $_->[2] }
286 :     grep { $_->[0] eq $userID and $_->[1] eq $setID }
287 :     $self->{problem_user}->list();
288 :     }
289 :    
290 :     sub newUserProblem($$) {
291 :     my ($self, $UserProblem) = @_;
292 :     die "newUserProblem failed: user set ", $UserProblem->set_id, " does not exist.\n"
293 :     unless $self->{set_user}->exists($UserProblem->set_id);
294 :     die "newUserProblem failed: problem ", $UserProblem->problem_id, " does not exist.\n"
295 :     unless $self->{problem}->exists($UserProblem->set_id);
296 :     return $self->{problem_user}->add($UserProblem);
297 :     }
298 :    
299 :     sub getUserProblem($$) {
300 :     my ($self, $userID, $setID, $problemID) = @_;
301 :     return $self->{problem_user}->get($userID, $setID, $problemID);
302 :     }
303 :    
304 :     sub putUserProblem($$) {
305 :     my ($self, $UserProblem) = @_;
306 :     return $self->{problem_user}->put($UserProblem);
307 :     }
308 :    
309 :     sub deleteUserProblem($$) {
310 :     my ($self, $userID, $setID, $problemID) = @_;
311 :     return $self->{problem_user}->delete($userID, $setID, $problemID);
312 :     }
313 :    
314 :     ################################################################################
315 :     # set+set_user functions
316 :     ################################################################################
317 :    
318 :     # ***
319 :    
320 :     ################################################################################
321 :     # problem+problem_user functions
322 :     ################################################################################
323 :    
324 :     # ***
325 :    
326 :     1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9