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