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