[system] / trunk / webwork-modperl / lib / WebworkSOAP.pm Repository:
ViewVC logotype

Annotation of /trunk/webwork-modperl/lib/WebworkSOAP.pm

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : mleventi 5009 package WebworkSOAP;
2 :    
3 :     use strict;
4 :    
5 :     use WeBWorK::Utils qw(pretty_print_rh);
6 :     use WeBWorK::Utils::CourseManagement qw(addCourse renameCourse deleteCourse listCourses archiveCourse listArchivedCourses unarchiveCourse);
7 :     use WeBWorK::DB;
8 : mleventi 5064 use WeBWorK::DB::Utils qw(initializeUserProblem);
9 : mleventi 5009 use WeBWorK::CourseEnvironment;
10 :     use WeBWorK::ContentGenerator::Instructor;
11 :    
12 :     use WebworkSOAP::Classes::GlobalSet;
13 :     use WebworkSOAP::Classes::UserSet;
14 :     use WebworkSOAP::Classes::GlobalProblem;
15 :     use WebworkSOAP::Classes::UserProblem;
16 :     use WebworkSOAP::Classes::User;
17 :     use WebworkSOAP::Classes::Key;
18 :     use WebworkSOAP::Classes::Password;
19 :     use WebworkSOAP::Classes::Permission;
20 :    
21 :     #init
22 :    
23 :     use constant {
24 :     SOAPERROR_MAJOR => 1,
25 :     SOAPERROR_MINOR => 2,
26 :     SOAPERROR_CLASS_NOT_FOUND => 3,
27 :     SOAPERROR_USER_NOT_FOUND => 4,
28 :     SOAPERROR_SET_NOT_FOUND => 5,
29 :     SOAPERROR_PROBLEM_NOT_FOUND => 6,
30 :     SOAPERROR_KEY_NOT_FOUND => 7,
31 :     SOAPERROR_AUTHEN_FAILED => 8
32 :     };
33 :    
34 :     our %SeedCE;
35 : gage 5223 %WebworkSOAP::SeedCE = %WeBWorK::SeedCE;
36 :    
37 : mleventi 5057 $WebworkSOAP::SeedCE{soap_authen_key} = "123456789123456789";
38 : gage 5226 #$WebworkSOAP::SeedCE{webwork_dir} = $ENV{WEBWORK_ROOT}|| warn "\$ENV{WEBWORK_ROOT} is undefined -- check your httpd configuration. Error caught ";
39 : mleventi 5009
40 : gage 5223
41 : mleventi 5009 sub new {
42 :     my($self,$authenKey,$courseName) = @_;
43 :     $self = {};
44 :     #Construct Course
45 : mleventi 5057 my $ce = eval { new WeBWorK::CourseEnvironment({%SeedCE, courseName => $courseName }) };
46 : gage 5225 $@ and soap_fault_major("Course Environment cannot be constructed.<br>$@");
47 : mleventi 5009 #Authentication Check
48 :     if($ce->{soap_authen_key} != $authenKey) {
49 :     soap_fault_authen();
50 :     }
51 :     #Construct DB handle
52 :     my $db = eval { new WeBWorK::DB($ce->{dbLayout}); };
53 : gage 5714 $@ and soap_fault_major("Failed to initialize database handle.<br>$@");
54 : mleventi 5009 $self->{db} = $db;
55 :     $self->{ce} = $ce;
56 :     bless $self;
57 :     return $self;
58 :     }
59 :    
60 : darnold 5844 sub array_to_soap_string {
61 :     my @array = @_;
62 :     @array = map { SOAP::Data->type( 'string', $_ ) } @array;
63 :     return \@array;
64 :     }
65 :    
66 : mleventi 5009 sub soap_fault_authen {
67 :     die SOAP::Fault->faultcode(SOAPERROR_AUTHEN_FAILED)
68 :     ->faultstring("SOAP Webservice Authentication Failed!");
69 :     }
70 :    
71 :     sub soap_fault {
72 :     my ($errorCode,$errorMsg) = @_;
73 :     die SOAP::Fault->faultcode($errorCode)
74 :     ->faultstring($errorMsg);
75 :     }
76 :    
77 :     sub soap_fault_major {
78 :     my ($errorMsg) = @_;
79 :     soap_fault(SOAPERROR_MAJOR,$errorMsg);
80 :     }
81 :     ####################################################################################
82 :     #SOAP CALLABLE FUNCTIONS
83 :     ####################################################################################
84 :    
85 :     =pod
86 :     =begin WSDL
87 :     _RETURN $string Hello World!
88 :     =cut
89 :     sub hello {
90 :     return "Hello world!";
91 :     }
92 :    
93 :     #################################################
94 :     #Course
95 :     #################################################
96 :    
97 :     =pod
98 :     =begin WSDL
99 :     _IN authenKey $string
100 :     _RETURN @string
101 :     =end WSDL
102 :     =cut
103 :     sub list_courses {
104 :     my ($self,$authenKey) = @_;
105 : mleventi 5057 my $ce = eval { new WeBWorK::CourseEnvironment({%WeBWorK::SeedCE })};
106 :     $@ and soap_fault_major("Internal Course Environment cannot be constructed.");
107 :     if($authenKey != $WebworkSOAP::SeedCE{soap_authen_key}) {
108 : mleventi 5009 soap_fault_authen;
109 :     }
110 :     $@ and soap_fault_major("Course Environment cannot be constructed.");
111 :     my @test = listCourses($ce);
112 : darnold 5844 return array_to_soap_string( @test );
113 : mleventi 5009 }
114 :    
115 :     =pod
116 :     =begin WSDL
117 :     _IN authenKey $string
118 :     _IN courseName $string
119 :     _IN userID $string
120 :     _RETURN $string
121 :     =end WSDL
122 :     =cut
123 :     sub login_user {
124 :     my ($self,$authenKey,$courseName,$userID) = @_;
125 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
126 :     my $newKey;
127 :     my $timestamp = time;
128 :     my @chars = @{ $soapEnv->{ce}->{sessionKeyChars} };
129 :     my $length = $soapEnv->{ce}->{sessionKeyLength};
130 :     srand;
131 :     $newKey = join ("", @chars[map rand(@chars), 1 .. $length]);
132 :     my $Key = $soapEnv->{db}->newKey(user_id=>$userID, key=>$newKey, timestamp=>$timestamp);
133 :     eval { $soapEnv->{db}->deleteKey($userID) };
134 :     eval { $soapEnv->{db}->addKey($Key) };
135 :     $@ and soap_fault(SOAPERROR_USER_NOT_FOUND,"User not found.");
136 : darnold 5844 return SOAP::Data->type( 'string', $newKey );
137 : mleventi 5009 }
138 :    
139 :     =pod
140 :     =begin WSDL
141 :     _IN authenKey $string
142 :     _IN courseName $string
143 :     _IN userID $string
144 :     _IN setID $string
145 :     _RETURN $string
146 :     =end WSDL
147 :     =cut
148 :     sub assign_set_to_user {
149 :     my ($self,$authenKey,$courseName,$userID,$setID) = @_;
150 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
151 :     my $GlobalSet = eval {$soapEnv->{db}->getGlobalSet($setID)};
152 :     $@ and soap_fault(SOAPERROR_SET_NOT_FOUND,"Set not found.");
153 :     my $setID = $GlobalSet->set_id;
154 :     my $db = $soapEnv->{db};
155 :     my $UserSet = $db->newUserSet;
156 :     $UserSet->user_id($userID);
157 :     $UserSet->set_id($setID);
158 :     my @results;
159 :     my $set_assigned = 0;
160 :     eval { $db->addUserSet($UserSet) };
161 :     if ($@) {
162 :     if ($@ =~ m/user set exists/) {
163 :     push @results, "set $setID is already assigned to user $userID.";
164 :     $set_assigned = 1;
165 :     } else {
166 :     die $@;
167 :     }
168 :     }
169 : mleventi 5035
170 : mleventi 5009 my @GlobalProblems = grep { defined $_ } $db->getAllGlobalProblems($setID);
171 :     foreach my $GlobalProblem (@GlobalProblems) {
172 : mleventi 5057 my $seed = int( rand( 2423) ) + 36;
173 :     my $UserProblem = $db->newUserProblem;
174 :     $UserProblem->user_id($userID);
175 :     $UserProblem->set_id($GlobalProblem->set_id);
176 :     $UserProblem->problem_id($GlobalProblem->problem_id);
177 :     initializeUserProblem($UserProblem, $seed);
178 :     eval { $db->addUserProblem($UserProblem) };
179 : mleventi 5035 }
180 : darnold 5844 return array_to_soap_string( @results ); #FIXME WSDL says $string, not @string?
181 : mleventi 5009 }
182 :    
183 : mleventi 5153 =pod
184 :     =begin WSDL
185 :     _IN authenKey $string
186 :     _IN courseName $string
187 :     _IN userIDs @string
188 :     _IN setID $string
189 : mleventi 5229 _RETURN @string
190 : mleventi 5153 =end WSDL
191 :     =cut
192 :     sub grade_users_sets {
193 :     my ($self,$authenKey,$courseName,$userIDs,$setID) = @_;
194 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
195 :     my @grades;
196 : gage 6123 #open (LOG, ">>/opt/webwork/tmp_log") or die "Can't open log file";
197 :     #print LOG "\n\nhi there\n\n";
198 :    
199 : mleventi 5153 foreach my $userID (@{$userIDs}) {
200 : gage 6123 my @problemData = $soapEnv->{db}->getAllMergedUserProblems($userID,$setID);
201 :    
202 : mleventi 5153 my $grade = 0;
203 :     for(my $i=0;$i<@problemData;$i++) {
204 : gage 6123 #print LOG "$userID problem Data",join(" ", %{$problemData[$i]}),"\n\n";
205 :     $grade += ($problemData[$i]->status)*($problemData[$i]->value);
206 :     #print LOG "grade is $grade\n";
207 : mleventi 5153 }
208 :     push(@grades,$grade);
209 :     }
210 : gage 6123 #close(LOG);
211 : darnold 5844 return array_to_soap_string( @grades );
212 : mleventi 5153 }
213 :    
214 : mleventi 5229 =pod
215 :     =begin WSDL
216 :     _IN authenKey $string
217 :     _IN courseName $string
218 :     _IN setID $string
219 : darnold 5844 _RETURN $WebworkSOAP::Classes::GlobalSet
220 : mleventi 5229 =end WSDL
221 :     =cut
222 :     sub get_set_data {
223 :     my ($self,$authenKey,$courseName,$setID) = @_;
224 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
225 :     my $setData = $soapEnv->{db}->getGlobalSet($setID);
226 :     if(not defined $setData) {
227 :     return -1;
228 :     }
229 :     my $set = new WebworkSOAP::Classes::GlobalSet($setData);
230 :     return $set;
231 :     }
232 :    
233 : mleventi 5009 ####################################################################
234 :     ##FUNCTIONS DIRECTLY MAPPED TO FUNCTIONS IN DB.pm
235 :     ####################################################################
236 : mleventi 5057 ###############################################
237 : mleventi 5009 ##Password
238 : mleventi 5057 ###############################################
239 : mleventi 5009
240 :     =pod
241 :     =begin WSDL
242 :     _IN authenKey $string
243 :     _IN courseName $string
244 :     _IN record $WebworkSOAP::Classes::Password
245 : mleventi 5229 _RETURN $string
246 : mleventi 5009 =end WSDL
247 :     =cut
248 :     sub add_password {
249 :     my ($self,$authenKey,$courseName,$record) = @_;
250 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
251 : mleventi 5035 my $newPassword = $soapEnv->{db}->newPassword;
252 :     %$newPassword = %$record;
253 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addPassword($newPassword) );
254 : mleventi 5009 }
255 :    
256 :     =pod
257 :     =begin WSDL
258 :     _IN authenKey $string
259 :     _IN courseName $string
260 :     _IN record $WebworkSOAP::Classes::Password
261 : mleventi 5229 _RETURN $string
262 : mleventi 5009 =end WSDL
263 :     =cut
264 :     sub put_password {
265 :     my ($self,$authenKey,$courseName,$record) = @_;
266 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
267 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putPassword($record) );
268 : mleventi 5009 }
269 :    
270 :     =pod
271 :     =begin WSDL
272 :     _IN authenKey $string
273 :     _IN courseName $string
274 :     _RETURN @string
275 :     =end WSDL
276 :     =cut
277 :     sub list_password {
278 :     my ($self,$authenKey,$courseName) = @_;
279 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
280 :     my @tempArray = $soapEnv->{db}->listPasswords;
281 : darnold 5844 return array_to_soap_string( @tempArray );
282 : mleventi 5009 }
283 :    
284 :     =pod
285 :     =begin WSDL
286 :     _IN authenKey $string
287 :     _IN courseName $string
288 :     _IN userIDs @string
289 : mleventi 5035 _RETURN @WebworkSOAP::Classes::Password Array of user objects
290 : mleventi 5009 =end WSDL
291 :     =cut
292 :     sub get_passwords {
293 :     my ($self,$authenKey,$courseName,$userIDs) = @_;
294 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
295 : mleventi 5035 my @passwordData = $soapEnv->{db}->getPasswords(@$userIDs);
296 :     my @passwords;
297 :     for(my $i=0;$i<@passwordData;$i++) {
298 :     push(@passwords,new WebworkSOAP::Classes::Password(@passwordData[$i]));
299 : mleventi 5009 }
300 : mleventi 5035 return \@passwords;
301 : mleventi 5009 }
302 :    
303 :     =pod
304 :     =begin WSDL
305 :     _IN authenKey $string
306 :     _IN courseName $string
307 :     _IN userID $string
308 :     _RETURN $WebworkSOAP::Classes::Password of names objects.
309 :     =end WSDL
310 :     =cut
311 :     sub get_password {
312 :     my ($self,$authenKey,$courseName,$userID) = @_;
313 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
314 : mleventi 5035 my $passwordData = $soapEnv->{db}->getPassword($userID);
315 :     if(not defined $passwordData) {
316 :     return -1;
317 :     }
318 :     my $password = new WebworkSOAP::Classes::Password($passwordData);
319 :     return ($password);
320 : mleventi 5009 }
321 :    
322 :     ##################################################
323 :     ##Permission
324 :     ##################################################
325 :    
326 :     =pod
327 :     =begin WSDL
328 :     _IN authenKey $string
329 :     _IN courseName $string
330 :     _IN record $WebworkSOAP::Classes::Permission
331 : mleventi 5229 _RETURN $string
332 : mleventi 5009 =end WSDL
333 :     =cut
334 :     sub add_permission {
335 :     my ($self,$authenKey,$courseName,$record) = @_;
336 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
337 : mleventi 5035 my $newPermissionLevel = $soapEnv->{db}->newPermissionLevel;
338 :     %$newPermissionLevel = %$record;
339 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addPermissionLevel($newPermissionLevel) );
340 : mleventi 5009 }
341 :    
342 :     =pod
343 :     =begin WSDL
344 :     _IN authenKey $string
345 :     _IN courseName $string
346 :     _IN record $WebworkSOAP::Classes::Permission
347 : mleventi 5229 _RETURN $string
348 : mleventi 5009 =end WSDL
349 :     =cut
350 :     sub put_permission {
351 :     my ($self,$authenKey,$courseName,$record) = @_;
352 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
353 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putPermissionLevel($record) );
354 : mleventi 5009 }
355 :    
356 :     =pod
357 :     =begin WSDL
358 :     _IN authenKey $string
359 :     _IN courseName $string
360 :     _RETURN @string
361 :     =end WSDL
362 :     =cut
363 :     sub list_permissions {
364 :     my ($self,$authenKey,$courseName) = @_;
365 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
366 :     my @tempArray = $soapEnv->{db}->listPermissionLevels;
367 : darnold 5844 return array_to_soap_string( @tempArray );
368 : mleventi 5009 }
369 :    
370 :     =pod
371 :     =begin WSDL
372 :     _IN authenKey $string
373 :     _IN courseName $string
374 :     _IN userIDs @string
375 : mleventi 5035 _RETURN @WebworkSOAP::Classes::Permission Array of user objects
376 : mleventi 5009 =end WSDL
377 :     =cut
378 :     sub get_permissions {
379 :     my ($self,$authenKey,$courseName,$userIDs) = @_;
380 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
381 : mleventi 5035 my @permissionData = $soapEnv->{db}->getPermissionLevels(@$userIDs);
382 :     my @permissions;
383 :     for(my $i=0;$i<@permissionData;$i++) {
384 :     push(@permissions,new WebworkSOAP::Classes::Permission(@permissionData[$i]));
385 : mleventi 5009 }
386 : mleventi 5035 return \@permissions;
387 : mleventi 5009 }
388 :    
389 :     =pod
390 :     =begin WSDL
391 :     _IN authenKey $string
392 :     _IN courseName $string
393 :     _IN userID $string
394 :     _RETURN $WebworkSOAP::Classes::Permission of names objects.
395 :     =end WSDL
396 :     =cut
397 :     sub get_permission {
398 :     my ($self,$authenKey,$courseName,$userID) = @_;
399 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
400 : mleventi 5035 my $permissionData = $soapEnv->{db}->getPermissionLevel($userID);
401 :     if(not defined $permissionData) {
402 :     return -1;
403 :     }
404 :     my $permission = new WebworkSOAP::Classes::Permission($permissionData);
405 :     return ($permission);
406 : mleventi 5009 }
407 :    
408 :     ##################################################
409 :     ##Key
410 :     ##################################################
411 :    
412 :     =pod
413 :     =begin WSDL
414 :     _IN authenKey $string
415 :     _IN courseName $string
416 :     _IN record $WebworkSOAP::Classes::Key
417 : mleventi 5229 _RETURN $string
418 : mleventi 5009 =end WSDL
419 :     =cut
420 :     sub add_key {
421 :     my ($self,$authenKey,$courseName,$record) = @_;
422 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
423 : mleventi 5035 my $newKey = $soapEnv->{db}->newKey;
424 :     %$newKey = %$record;
425 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addKey($newKey) );
426 : mleventi 5009 }
427 :    
428 :     =pod
429 :     =begin WSDL
430 :     _IN authenKey $string
431 :     _IN courseName $string
432 :     _IN record $WebworkSOAP::Classes::Key
433 : mleventi 5229 _RETURN $string
434 : mleventi 5009 =end WSDL
435 :     =cut
436 :     sub put_key {
437 :     my ($self,$authenKey,$courseName,$record) = @_;
438 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
439 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putKey($record) );
440 : mleventi 5009 }
441 :    
442 :     =pod
443 :     =begin WSDL
444 :     _IN authenKey $string
445 :     _IN courseName $string
446 :     _RETURN @string
447 :     =end WSDL
448 :     =cut
449 :     sub list_keys {
450 :     my ($self,$authenKey,$courseName) = @_;
451 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
452 :     my @tempArray = $soapEnv->{db}->listKeys;
453 : darnold 5844 return array_to_soap_string( @tempArray );
454 : mleventi 5009 }
455 :    
456 :     =pod
457 :     =begin WSDL
458 :     _IN authenKey $string
459 :     _IN courseName $string
460 :     _IN userIDs @string
461 : mleventi 5035 _RETURN @WebworkSOAP::Classes::Key Array of user objects
462 : mleventi 5009 =end WSDL
463 :     =cut
464 :     sub get_keys {
465 :     my ($self,$authenKey,$courseName,$userIDs) = @_;
466 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
467 :     my @keyData = $soapEnv->{db}->getKeys(@$userIDs);
468 :     my @keys;
469 :     for(my $i=0;$i<@keyData;$i++) {
470 :     push(@keys,new WebworkSOAP::Classes::Key(@keyData[$i]));
471 :     }
472 :     return \@keys;
473 :     }
474 :    
475 :     =pod
476 :     =begin WSDL
477 :     _IN authenKey $string
478 :     _IN courseName $string
479 :     _IN userID $string
480 :     _RETURN $WebworkSOAP::Classes::Key of names objects.
481 :     =end WSDL
482 :     =cut
483 :     sub get_key {
484 :     my ($self,$authenKey,$courseName,$userID) = @_;
485 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
486 :     my $keyData = $soapEnv->{db}->getKey($userID);
487 : mleventi 5035 if(not defined $keyData) {
488 :     return -1;
489 :     }
490 : mleventi 5009 my $key = new WebworkSOAP::Classes::Key($keyData);
491 :     return ($key);
492 :     }
493 :    
494 :     ##################################################
495 :     ##User
496 :     ##################################################
497 :    
498 :     =pod
499 :     =begin WSDL
500 :     _IN authenKey $string
501 :     _IN courseName $string
502 :     _IN record $WebworkSOAP::Classes::User
503 : mleventi 5229 _RETURN $string
504 : mleventi 5009 =end WSDL
505 :     =cut
506 :     sub add_user {
507 :     my ($self,$authenKey,$courseName,$record) = @_;
508 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
509 : mleventi 5035 my $newUser = $soapEnv->{db}->newUser;
510 :     %$newUser = %$record;
511 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addUser($newUser) );
512 : mleventi 5009 }
513 :    
514 :     =pod
515 :     =begin WSDL
516 :     _IN authenKey $string
517 :     _IN courseName $string
518 :     _IN record $WebworkSOAP::Classes::User
519 : mleventi 5229 _RETURN $string
520 : mleventi 5009 =end WSDL
521 :     =cut
522 :     sub put_user {
523 :     my ($self,$authenKey,$courseName,$record) = @_;
524 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
525 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putUser($record) );
526 : mleventi 5009 }
527 :    
528 :     =pod
529 :     =begin WSDL
530 :     _IN authenKey $string
531 :     _IN courseName $string
532 :     _RETURN @string of names objects.
533 :     =end WSDL
534 :     =cut
535 :     sub list_users {
536 : mleventi 5035 my ($self,$authenKey,$courseName) = @_;
537 : mleventi 5009 my $soapEnv = new WebworkSOAP($authenKey,$courseName);
538 :     my @tempArray = $soapEnv->{db}->listUsers;
539 : darnold 5844 return array_to_soap_string( @tempArray );
540 : mleventi 5009 }
541 :    
542 :     =pod
543 :     =begin WSDL
544 :     _IN authenKey $string
545 :     _IN courseName $string
546 :     _IN userID $string
547 :     _RETURN $WebworkSOAP::Classes::User of names objects.
548 :     =end WSDL
549 :     =cut
550 :     sub get_user {
551 :     my ($self,$authenKey,$courseName,$userID) = @_;
552 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
553 :     my $userData = $soapEnv->{db}->getUser($userID);
554 : mleventi 5035 if(not defined $userData) {
555 :     return -1;
556 :     }
557 :     my $user = new WebworkSOAP::Classes::User($userData);
558 :     return ($user);
559 : mleventi 5009 }
560 :    
561 :     =pod
562 :     =begin WSDL
563 :     _IN authenKey $string
564 :     _IN courseName $string
565 :     _IN userIDs @string
566 : mleventi 5035 _RETURN @WebworkSOAP::Classes::User Array of user objects
567 : mleventi 5009 =end WSDL
568 :     =cut
569 :     sub get_users {
570 :     my ($self,$authenKey,$courseName,$userIDs) = @_;
571 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
572 :     my @userData = $soapEnv->{db}->getUsers(@$userIDs);
573 :     my @users;
574 :     for(my $i=0;$i<@userData;$i++) {
575 :     push(@users,new WebworkSOAP::Classes::User(@userData[$i]));
576 :     }
577 :     return \@users;
578 :     }
579 :    
580 :     =pod
581 :     =begin WSDL
582 :     _IN authenKey $string
583 :     _IN courseName $string
584 :     _IN userID $string
585 : mleventi 5229 _RETURN $string
586 : mleventi 5009 =end WSDL
587 :     =cut
588 :     sub delete_user {
589 :     my ($self,$authenKey,$courseName,$userID) = @_;
590 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
591 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->deleteUser($userID) );
592 : mleventi 5009 }
593 :    
594 :     ##################################################
595 :     ##Global Sets
596 :     ##################################################
597 :    
598 :     =pod
599 :     =begin WSDL
600 :     _IN authenKey $string
601 :     _IN courseName $string
602 :     _IN record $WebworkSOAP::Classes::GlobalSet
603 : mleventi 5229 _RETURN $string
604 : mleventi 5009 =end WSDL
605 :     =cut
606 :     sub add_global_set {
607 :     my ($self,$authenKey,$courseName,$record) = @_;
608 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
609 : mleventi 5035 my $newGlobalSet = $soapEnv->{db}->newGlobalSet;
610 :     %$newGlobalSet = %$record;
611 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addGlobalSet($newGlobalSet) );
612 : mleventi 5009 }
613 :    
614 :     =pod
615 :     =begin WSDL
616 :     _IN authenKey $string
617 :     _IN courseName $string
618 :     _IN record $WebworkSOAP::Classes::GlobalSet
619 : mleventi 5229 _RETURN $string
620 : mleventi 5009 =end WSDL
621 :     =cut
622 :     sub put_global_set {
623 :     my ($self,$authenKey,$courseName,$record) = @_;
624 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
625 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putGlobalSet($record) );
626 : mleventi 5009 }
627 :    
628 :     =pod
629 :     =begin WSDL
630 :     _IN authenKey $string
631 :     _IN courseName $string
632 :     _RETURN @string of names objects.
633 :     =end WSDL
634 :     =cut
635 :     sub list_global_sets {
636 :     my ($self,$authenKey,$courseName) = @_;
637 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
638 :     my @tempArray = $soapEnv->{db}->listGlobalSets;
639 : darnold 5844 return array_to_soap_string( @tempArray );
640 : mleventi 5009 }
641 :    
642 :     =pod
643 :     =begin WSDL
644 :     _IN authenKey $string
645 :     _IN courseName $string
646 : mleventi 5035 _RETURN @WebworkSOAP::Classes::GlobalSet Array of user objects
647 : mleventi 5009 =end WSDL
648 :     =cut
649 :     sub get_all_global_sets {
650 :     my ($self,$authenKey,$courseName) = @_;
651 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
652 :     my @tempArray = $soapEnv->{db}->listGlobalSets;
653 :     my @setData = $soapEnv->{db}->getGlobalSets(@tempArray);
654 :     my @sets;
655 :     for(my $i=0;$i<@setData;$i++) {
656 :     push(@sets,new WebworkSOAP::Classes::GlobalSet(@setData[$i]));
657 :     }
658 :     return \@sets;
659 :     }
660 :    
661 :     =pod
662 :     =begin WSDL
663 :     _IN authenKey $string
664 :     _IN courseName $string
665 :     _IN setIDs @string
666 : mleventi 5035 _RETURN @WebworkSOAP::Classes::GlobalSet Array of user objects
667 : mleventi 5009 =end WSDL
668 :     =cut
669 :     sub get_global_sets {
670 :     my ($self,$authenKey,$courseName,$setIDs) = @_;
671 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
672 :     my @setData = $soapEnv->{db}->getGlobalSets(@$setIDs);
673 :     my @sets;
674 :     for(my $i=0;$i<@setData;$i++) {
675 :     push(@sets,new WebworkSOAP::Classes::GlobalSet(@setData[$i]));
676 :     }
677 :     return \@sets;
678 :     }
679 :    
680 :     =pod
681 :     =begin WSDL
682 :     _IN authenKey $string
683 :     _IN courseName $string
684 :     _IN setID $string
685 : mleventi 5057 _RETURN $WebworkSOAP::Classes::GlobalSet
686 : mleventi 5009 =end WSDL
687 :     =cut
688 :     sub get_global_set {
689 :     my ($self,$authenKey,$courseName,$setID) = @_;
690 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
691 :     my $setData = $soapEnv->{db}->getGlobalSet($setID);
692 : mleventi 5035 if(not defined $setData) {
693 :     return -1;
694 :     }
695 : mleventi 5009 my $set = new WebworkSOAP::Classes::GlobalSet($setData);
696 :     return ($set);
697 :     }
698 :    
699 :     =pod
700 :     =begin WSDL
701 :     _IN authenKey $string
702 :     _IN courseName $string
703 :     _IN setID $string
704 : mleventi 5229 _RETURN $string
705 : mleventi 5009 =end WSDL
706 :     =cut
707 : mleventi 5057 sub delete_global_set {
708 : mleventi 5009 my ($self,$authenKey,$courseName,$setID) = @_;
709 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
710 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->deleteGlobalSet($setID) );
711 : mleventi 5009 }
712 :    
713 :     ##################################################
714 :     ##Global Problems
715 :     ##################################################
716 :    
717 :     =pod
718 :     =begin WSDL
719 :     _IN authenKey $string
720 :     _IN courseName $string
721 :     _IN record $WebworkSOAP::Classes::GlobalProblem
722 : mleventi 5229 _RETURN $string
723 : mleventi 5009 =end WSDL
724 :     =cut
725 :     sub add_global_problem {
726 :     my ($self,$authenKey,$courseName,$record) = @_;
727 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
728 : mleventi 5035 my $newGlobalProblem = $soapEnv->{db}->newGlobalProblem;
729 :     %$newGlobalProblem = %$record;
730 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addGlobalProblem($newGlobalProblem) );
731 : mleventi 5009 }
732 :    
733 :     =pod
734 :     =begin WSDL
735 :     _IN authenKey $string
736 :     _IN courseName $string
737 :     _IN record $WebworkSOAP::Classes::GlobalProblem
738 : mleventi 5229 _RETURN $string
739 : mleventi 5009 =end WSDL
740 :     =cut
741 :     sub put_global_problem {
742 :     my ($self,$authenKey,$courseName,$record) = @_;
743 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
744 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putGlobalProblem($record) );
745 : mleventi 5009 }
746 :    
747 :     =pod
748 :     =begin WSDL
749 :     _IN authenKey $string
750 :     _IN courseName $string
751 : mleventi 5064 _IN setID $string
752 : mleventi 5009 _RETURN @string of names objects.
753 :     =end WSDL
754 :     =cut
755 :     sub list_global_problems {
756 : mleventi 5064 my ($self,$authenKey,$courseName,$setID) = @_;
757 : mleventi 5009 my $soapEnv = new WebworkSOAP($authenKey,$courseName);
758 : mleventi 5064 my @tempArray = $soapEnv->{db}->listGlobalProblems($setID);
759 : darnold 5844 return array_to_soap_string( @tempArray );
760 : mleventi 5009 }
761 :    
762 :     =pod
763 :     =begin WSDL
764 :     _IN authenKey $string
765 :     _IN courseName $string
766 :     _IN setID $string
767 : mleventi 5035 _RETURN @WebworkSOAP::Classes::GlobalProblem Array of user objects
768 : mleventi 5009 =end WSDL
769 :     =cut
770 :     sub get_all_global_problems {
771 :     my ($self,$authenKey,$courseName,$setID) = @_;
772 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
773 :     my @problemData = $soapEnv->{db}->getAllGlobalProblems($setID);
774 :     my @problems;
775 :     for(my $i=0;$i<@problemData;$i++) {
776 :     push(@problems,new WebworkSOAP::Classes::GlobalProblem(@problemData[$i]));
777 :     }
778 :     return \@problems;
779 :     }
780 :    
781 :     =pod
782 :     =begin
783 :     _IN authenKey $string
784 :     _IN courseName $string
785 : darnold 5844 _IN problemIDs @string An array reference: [userID setID problemID]
786 : mleventi 5035 _RETURN @WebworkSOAP::Classes::GlobalProblem Array of user objects
787 : mleventi 5009 =end WSDL
788 :     =cut
789 :     sub get_global_problems {
790 :     my ($self,$authenKey,$courseName,$problemIDs) = @_;
791 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
792 :     my @problemData = $soapEnv->{db}->getGlobalProblems(@$problemIDs);
793 :     my @problems;
794 :     for(my $i=0;$i<@problemData;$i++) {
795 : darnold 5844 push(@problems,new WebworkSOAP::Classes::GlobalProblem(@problemData[$i])); #FIXME $problemData[$i]?
796 : mleventi 5009 }
797 :     return \@problems;
798 :     }
799 :    
800 :     =pod
801 :     =begin WSDL
802 :     _IN authenKey $string
803 :     _IN courseName $string
804 :     _IN setID $string
805 :     _IN problemID $string
806 :     _RETURN $WebworkSOAP::Classes::GlobalProblem of names objects.
807 :     =end WSDL
808 :     =cut
809 :     sub get_global_problem {
810 :     my ($self,$authenKey,$courseName,$setID,$problemID) = @_;
811 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
812 :     my $problemData = $soapEnv->{db}->getGlobalProblem($setID,$problemID);
813 :     if(not defined $problemData) {
814 :     return -1;
815 :     }
816 :     my $problem = new WebworkSOAP::Classes::GlobalProblem($problemData);
817 :     return ($problem);
818 :     }
819 :    
820 :     =pod
821 :     =begin WSDL
822 :     _IN authenKey $string
823 :     _IN courseName $string
824 :     _IN setID $string
825 :     _IN problemID $string
826 : mleventi 5229 _RETURN $string
827 : mleventi 5009 =end WSDL
828 :     =cut
829 :     sub delete_global_problem {
830 :     my ($self,$authenKey,$courseName,$setID,$problemID) = @_;
831 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
832 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->deleteGlobalProblem($setID,$problemID) );
833 : mleventi 5009 }
834 :    
835 :     ##################################################
836 :     ##USER PROBLEM
837 :     ##################################################
838 :    
839 :     =pod
840 :     =begin WSDL
841 :     _IN authenKey $string
842 :     _IN courseName $string
843 :     _IN record $WebworkSOAP::Classes::UserProblem
844 : mleventi 5229 _RETURN $string
845 : mleventi 5009 =end WSDL
846 :     =cut
847 :     sub add_user_problem {
848 :     my ($self,$authenKey,$courseName,$record) = @_;
849 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
850 : mleventi 5035 my $newUserProblem = $soapEnv->{db}->newUserProblem;
851 :     %$newUserProblem = %$record;
852 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addUserProblem($newUserProblem) );
853 : mleventi 5009 }
854 :    
855 :     =pod
856 :     =begin WSDL
857 :     _IN authenKey $string
858 :     _IN courseName $string
859 :     _IN record $WebworkSOAP::Classes::UserProblem
860 : mleventi 5229 _RETURN $string
861 : mleventi 5009 =end WSDL
862 :     =cut
863 :     sub put_user_problem {
864 :     my ($self,$authenKey,$courseName,$record) = @_;
865 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
866 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->putUserProblem($record) );
867 : mleventi 5009 }
868 :    
869 :     =pod
870 :     =begin WSDL
871 :     _IN authenKey $string
872 :     _IN courseName $string
873 :     _IN userID $string
874 : darnold 5844 _IN setID $string
875 : mleventi 5009 _RETURN @string of names objects.
876 :     =end WSDL
877 :     =cut
878 :     sub list_user_problems {
879 : darnold 5844 my ($self,$authenKey,$courseName,$userID,$setID) = @_;
880 : mleventi 5009 my $soapEnv = new WebworkSOAP($authenKey,$courseName);
881 : darnold 5844 my @tempArray = $soapEnv->{db}->listUserProblems($userID,$setID);
882 :     return array_to_soap_string( @tempArray );
883 : mleventi 5009 }
884 :    
885 :     =pod
886 :     =begin WSDL
887 :     _IN authenKey $string
888 :     _IN courseName $string
889 :     _IN userID $string
890 :     _IN setID $string
891 :     _RETURN @WebworkSOAP::Classes::UserProblem of names objects.
892 :     =end WSDL
893 :     =cut
894 :     sub get_all_user_problems {
895 :     my ($self,$authenKey,$courseName,$userID,$setID) = @_;
896 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
897 :     my @problemData = $soapEnv->{db}->getAllUserProblems($userID,$setID);
898 :     my @problems;
899 :     for(my $i=0;$i<@problemData;$i++) {
900 :     push(@problems,new WebworkSOAP::Classes::UserProblem(@problemData[$i]));
901 :     }
902 : mleventi 5035 return \@problems;
903 : mleventi 5009 }
904 :    
905 :     =pod
906 :     =begin WSDL
907 :     _IN authenKey $string
908 :     _IN courseName $string
909 : darnold 5844 _IN userProblemIDs @string A 3 element array: { user_ID, setID, problemID }
910 : mleventi 5009 _RETURN @WebworkSOAP::Classes::UserProblem of names objects.
911 :     =end WSDL
912 :     =cut
913 :     sub get_user_problems {
914 :     my ($self,$authenKey,$courseName,$userProblemIDs) = @_;
915 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
916 :     my @problemData = $soapEnv->{db}->getUserProblems(@$userProblemIDs);
917 :     my @problems;
918 :     for(my $i=0;$i<@problemData;$i++) {
919 :     push(@problems,new WebworkSOAP::Classes::UserProblem(@problemData[$i]));
920 :     }
921 : mleventi 5035 return \@problems;
922 : mleventi 5009 }
923 :    
924 :     =pod
925 :     =begin WSDL
926 :     _IN authenKey $string
927 :     _IN courseName $string
928 :     _IN userID $string
929 :     _IN setID $string
930 :     _IN problemID $string
931 :     _RETURN $WebworkSOAP::Classes::UserProblem of names objects.
932 :     =end WSDL
933 :     =cut
934 :     sub get_user_problem {
935 :     my ($self,$authenKey,$courseName,$userID,$setID,$problemID) = @_;
936 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
937 :     my $problemData = $soapEnv->{db}->getUserProblem($userID,$setID,$problemID);
938 :     if(not defined $problemData) {
939 :     return -1;
940 :     }
941 :     my $problem = new WebworkSOAP::Classes::UserProblem($problemData);
942 : mleventi 5035 return ($problem);
943 : mleventi 5009 }
944 :    
945 :     =pod
946 :     =begin WSDL
947 :     _IN authenKey $string
948 :     _IN courseName $string
949 :     _IN userID $string
950 :     _IN setID $string
951 :     _IN problemID $string
952 : mleventi 5229 _RETURN $string
953 : mleventi 5009 =end WSDL
954 :     =cut
955 :     sub delete_user_problem {
956 :     my ($self,$authenKey,$courseName,$userID,$setID,$problemID) = @_;
957 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
958 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->deleteUserProblem($userID,$setID,$problemID) );
959 : mleventi 5009 }
960 :    
961 :     ##################################################
962 :     ##USER SET
963 :     ##################################################
964 :    
965 :     =pod
966 :     =begin WSDL
967 :     _IN authenKey $string
968 :     _IN courseName $string
969 :     _IN record $WebworkSOAP::Classes::UserSet
970 : mleventi 5229 _RETURN $string
971 : mleventi 5009 =end WSDL
972 :     =cut
973 :     sub add_user_set {
974 :     my ($self,$authenKey,$courseName,$record) = @_;
975 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
976 : mleventi 5035 my $newUserSet = $soapEnv->{db}->newUserSet;
977 :     %$newUserSet = %$record;
978 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addUserSet($newUserSet) );
979 : mleventi 5009 }
980 :    
981 :     =pod
982 :     =begin WSDL
983 :     _IN authenKey $string
984 :     _IN courseName $string
985 :     _IN record $WebworkSOAP::Classes::UserSet
986 : mleventi 5229 _RETURN $string
987 : mleventi 5009 =end WSDL
988 :     =cut
989 :     sub put_user_set {
990 :     my ($self,$authenKey,$courseName,$record) = @_;
991 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
992 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->addUserSet($record) );
993 : mleventi 5009 }
994 :    
995 :     =pod
996 :     =begin WSDL
997 :     _IN authenKey $string
998 :     _IN courseName $string
999 :     _IN userID $string
1000 :     _RETURN @string of names objects.
1001 :     =end WSDL
1002 :     =cut
1003 :     sub list_user_sets {
1004 :     my ($self,$authenKey,$courseName,$userID) = @_;
1005 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
1006 :     my @tempArray = $soapEnv->{db}->listUserSets($userID);
1007 : darnold 5844 return array_to_soap_string( @tempArray );
1008 : mleventi 5009 }
1009 :    
1010 :     =pod
1011 :     =begin WSDL
1012 :     _IN authenKey $string
1013 :     _IN courseName $string
1014 :     _RETURN @WebworkSOAP::Classes::UserSet of names objects.
1015 :     =end WSDL
1016 :     =cut
1017 :     sub get_all_user_sets {
1018 :     my ($self,$authenKey,$courseName) = @_;
1019 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
1020 :     my @setData = $soapEnv->{db}->getAllUserSets();
1021 :     my @sets;
1022 :     for(my $i=0;$i<@setData;$i++) {
1023 :     push(@sets,new WebworkSOAP::Classes::UserSet(@setData[$i]));
1024 :     }
1025 : mleventi 5035 return \@sets;
1026 : mleventi 5009 }
1027 :    
1028 :     =pod
1029 :     =begin WSDL
1030 :     _IN authenKey $string
1031 :     _IN courseName $string
1032 :     _IN userSetIDs $string
1033 :     _RETURN @WebworkSOAP::Classes::UserSet of names objects.
1034 :     =end WSDL
1035 :     =cut
1036 :     sub get_user_sets {
1037 :     my ($self,$authenKey,$courseName,$userSetIDs) = @_;
1038 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
1039 :     my @setData = $soapEnv->{db}->getUserSets(@$userSetIDs);
1040 :     my @sets;
1041 :     for(my $i=0;$i<@setData;$i++) {
1042 :     push(@sets,new WebworkSOAP::Classes::UserSet(@setData[$i]));
1043 :     }
1044 : mleventi 5035 return \@sets;
1045 : mleventi 5009 }
1046 :    
1047 :     =pod
1048 :     =begin WSDL
1049 :     _IN authenKey $string
1050 :     _IN courseName $string
1051 :     _IN userID $string
1052 :     _IN setID $string
1053 :     _RETURN $WebworkSOAP::Classes::UserSet of names objects.
1054 :     =end WSDL
1055 :     =cut
1056 :     sub get_user_set {
1057 :     my ($self,$authenKey,$courseName,$userID,$setID) = @_;
1058 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
1059 :     my $setData = $soapEnv->{db}->getUserSet($userID,$setID);
1060 :     if(not defined $setData) {
1061 :     return -1;
1062 :     }
1063 :     my $set = new WebworkSOAP::Classes::UserSet($setData);
1064 :     return $set;
1065 :     }
1066 :    
1067 :     =pod
1068 :     =begin WSDL
1069 :     _IN authenKey $string
1070 :     _IN courseName $string
1071 :     _IN userID $string
1072 :     _IN setID $string
1073 : mleventi 5229 _RETURN $string
1074 : mleventi 5009 =end WSDL
1075 :     =cut
1076 :     sub delete_user_set {
1077 :     my ($self,$authenKey,$courseName,$userID,$setID) = @_;
1078 :     my $soapEnv = new WebworkSOAP($authenKey,$courseName);
1079 : darnold 5844 return SOAP::Data->type( 'string', $soapEnv->{db}->deleteUserSet($userID,$setID) );
1080 : mleventi 5009 }
1081 :    
1082 :    
1083 :     1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9