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

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9