Parent Directory
|
Revision Log
This seems to be a more stable way to discover the root directory of webwork.
For some reason $ENV{WEBWORK_ROOT} is occasionally undefined.
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::DB::Utils qw(initializeUserProblem); 9 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 %WebworkSOAP::SeedCE = %WeBWorK::SeedCE; 36 37 $WebworkSOAP::SeedCE{soap_authen_key} = "123456789123456789"; 38 #$WebworkSOAP::SeedCE{webwork_dir} = $ENV{WEBWORK_ROOT}|| warn "\$ENV{WEBWORK_ROOT} is undefined -- check your httpd configuration. Error caught "; 39 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.<br>$@"); 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 my $ce = eval { new WeBWorK::CourseEnvironment({%WeBWorK::SeedCE })}; 100 $@ and soap_fault_major("Internal Course Environment cannot be constructed."); 101 if($authenKey != $WebworkSOAP::SeedCE{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 $seed = int( rand( 2423) ) + 36; 167 my $UserProblem = $db->newUserProblem; 168 $UserProblem->user_id($userID); 169 $UserProblem->set_id($GlobalProblem->set_id); 170 $UserProblem->problem_id($GlobalProblem->problem_id); 171 initializeUserProblem($UserProblem, $seed); 172 eval { $db->addUserProblem($UserProblem) }; 173 } 174 return @results; 175 } 176 177 =pod 178 =begin WSDL 179 _IN authenKey $string 180 _IN courseName $string 181 _IN userIDs @string 182 _IN setID $string 183 _RETURN @integer 184 =end WSDL 185 =cut 186 sub grade_users_sets { 187 my ($self,$authenKey,$courseName,$userIDs,$setID) = @_; 188 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 189 my @grades; 190 foreach my $userID (@{$userIDs}) { 191 my @problemData = $soapEnv->{db}->getAllUserProblems($userID,$setID); 192 193 my $grade = 0; 194 for(my $i=0;$i<@problemData;$i++) { 195 $grade += @problemData[$i]->status; 196 } 197 push(@grades,$grade); 198 } 199 return \@grades; 200 } 201 202 203 #################################################################### 204 ##FUNCTIONS DIRECTLY MAPPED TO FUNCTIONS IN DB.pm 205 #################################################################### 206 ############################################### 207 ##Password 208 ############################################### 209 210 =pod 211 =begin WSDL 212 _IN authenKey $string 213 _IN courseName $string 214 _IN record $WebworkSOAP::Classes::Password 215 _RETURN $integer 216 =end WSDL 217 =cut 218 sub add_password { 219 my ($self,$authenKey,$courseName,$record) = @_; 220 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 221 my $newPassword = $soapEnv->{db}->newPassword; 222 %$newPassword = %$record; 223 return $soapEnv->{db}->addPassword($newPassword); 224 } 225 226 =pod 227 =begin WSDL 228 _IN authenKey $string 229 _IN courseName $string 230 _IN record $WebworkSOAP::Classes::Password 231 _RETURN $integer 232 =end WSDL 233 =cut 234 sub put_password { 235 my ($self,$authenKey,$courseName,$record) = @_; 236 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 237 return $soapEnv->{db}->putPassword($record); 238 } 239 240 =pod 241 =begin WSDL 242 _IN authenKey $string 243 _IN courseName $string 244 _RETURN @string 245 =end WSDL 246 =cut 247 sub list_password { 248 my ($self,$authenKey,$courseName) = @_; 249 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 250 my @tempArray = $soapEnv->{db}->listPasswords; 251 return \@tempArray; 252 } 253 254 =pod 255 =begin WSDL 256 _IN authenKey $string 257 _IN courseName $string 258 _IN userIDs @string 259 _RETURN @WebworkSOAP::Classes::Password Array of user objects 260 =end WSDL 261 =cut 262 sub get_passwords { 263 my ($self,$authenKey,$courseName,$userIDs) = @_; 264 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 265 my @passwordData = $soapEnv->{db}->getPasswords(@$userIDs); 266 my @passwords; 267 for(my $i=0;$i<@passwordData;$i++) { 268 push(@passwords,new WebworkSOAP::Classes::Password(@passwordData[$i])); 269 } 270 return \@passwords; 271 } 272 273 =pod 274 =begin WSDL 275 _IN authenKey $string 276 _IN courseName $string 277 _IN userID $string 278 _RETURN $WebworkSOAP::Classes::Password of names objects. 279 =end WSDL 280 =cut 281 sub get_password { 282 my ($self,$authenKey,$courseName,$userID) = @_; 283 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 284 my $passwordData = $soapEnv->{db}->getPassword($userID); 285 if(not defined $passwordData) { 286 return -1; 287 } 288 my $password = new WebworkSOAP::Classes::Password($passwordData); 289 return ($password); 290 } 291 292 ################################################## 293 ##Permission 294 ################################################## 295 296 =pod 297 =begin WSDL 298 _IN authenKey $string 299 _IN courseName $string 300 _IN record $WebworkSOAP::Classes::Permission 301 _RETURN $integer 302 =end WSDL 303 =cut 304 sub add_permission { 305 my ($self,$authenKey,$courseName,$record) = @_; 306 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 307 my $newPermissionLevel = $soapEnv->{db}->newPermissionLevel; 308 %$newPermissionLevel = %$record; 309 return $soapEnv->{db}->addPermissionLevel($newPermissionLevel); 310 } 311 312 =pod 313 =begin WSDL 314 _IN authenKey $string 315 _IN courseName $string 316 _IN record $WebworkSOAP::Classes::Permission 317 _RETURN $integer 318 =end WSDL 319 =cut 320 sub put_permission { 321 my ($self,$authenKey,$courseName,$record) = @_; 322 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 323 return $soapEnv->{db}->putPermissionLevel($record); 324 } 325 326 =pod 327 =begin WSDL 328 _IN authenKey $string 329 _IN courseName $string 330 _RETURN @string 331 =end WSDL 332 =cut 333 sub list_permissions { 334 my ($self,$authenKey,$courseName) = @_; 335 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 336 my @tempArray = $soapEnv->{db}->listPermissionLevels; 337 return \@tempArray; 338 } 339 340 =pod 341 =begin WSDL 342 _IN authenKey $string 343 _IN courseName $string 344 _IN userIDs @string 345 _RETURN @WebworkSOAP::Classes::Permission Array of user objects 346 =end WSDL 347 =cut 348 sub get_permissions { 349 my ($self,$authenKey,$courseName,$userIDs) = @_; 350 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 351 my @permissionData = $soapEnv->{db}->getPermissionLevels(@$userIDs); 352 my @permissions; 353 for(my $i=0;$i<@permissionData;$i++) { 354 push(@permissions,new WebworkSOAP::Classes::Permission(@permissionData[$i])); 355 } 356 return \@permissions; 357 } 358 359 =pod 360 =begin WSDL 361 _IN authenKey $string 362 _IN courseName $string 363 _IN userID $string 364 _RETURN $WebworkSOAP::Classes::Permission of names objects. 365 =end WSDL 366 =cut 367 sub get_permission { 368 my ($self,$authenKey,$courseName,$userID) = @_; 369 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 370 my $permissionData = $soapEnv->{db}->getPermissionLevel($userID); 371 if(not defined $permissionData) { 372 return -1; 373 } 374 my $permission = new WebworkSOAP::Classes::Permission($permissionData); 375 return ($permission); 376 } 377 378 ################################################## 379 ##Key 380 ################################################## 381 382 =pod 383 =begin WSDL 384 _IN authenKey $string 385 _IN courseName $string 386 _IN record $WebworkSOAP::Classes::Key 387 _RETURN $integer 388 =end WSDL 389 =cut 390 sub add_key { 391 my ($self,$authenKey,$courseName,$record) = @_; 392 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 393 my $newKey = $soapEnv->{db}->newKey; 394 %$newKey = %$record; 395 return $soapEnv->{db}->addKey($newKey); 396 } 397 398 =pod 399 =begin WSDL 400 _IN authenKey $string 401 _IN courseName $string 402 _IN record $WebworkSOAP::Classes::Key 403 _RETURN $integer 404 =end WSDL 405 =cut 406 sub put_key { 407 my ($self,$authenKey,$courseName,$record) = @_; 408 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 409 return $soapEnv->{db}->putKey($record); 410 } 411 412 =pod 413 =begin WSDL 414 _IN authenKey $string 415 _IN courseName $string 416 _RETURN @string 417 =end WSDL 418 =cut 419 sub list_keys { 420 my ($self,$authenKey,$courseName) = @_; 421 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 422 my @tempArray = $soapEnv->{db}->listKeys; 423 return \@tempArray; 424 } 425 426 =pod 427 =begin WSDL 428 _IN authenKey $string 429 _IN courseName $string 430 _IN userIDs @string 431 _RETURN @WebworkSOAP::Classes::Key Array of user objects 432 =end WSDL 433 =cut 434 sub get_keys { 435 my ($self,$authenKey,$courseName,$userIDs) = @_; 436 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 437 my @keyData = $soapEnv->{db}->getKeys(@$userIDs); 438 my @keys; 439 for(my $i=0;$i<@keyData;$i++) { 440 push(@keys,new WebworkSOAP::Classes::Key(@keyData[$i])); 441 } 442 return \@keys; 443 } 444 445 =pod 446 =begin WSDL 447 _IN authenKey $string 448 _IN courseName $string 449 _IN userID $string 450 _RETURN $WebworkSOAP::Classes::Key of names objects. 451 =end WSDL 452 =cut 453 sub get_key { 454 my ($self,$authenKey,$courseName,$userID) = @_; 455 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 456 my $keyData = $soapEnv->{db}->getKey($userID); 457 if(not defined $keyData) { 458 return -1; 459 } 460 my $key = new WebworkSOAP::Classes::Key($keyData); 461 return ($key); 462 } 463 464 ################################################## 465 ##User 466 ################################################## 467 468 =pod 469 =begin WSDL 470 _IN authenKey $string 471 _IN courseName $string 472 _IN record $WebworkSOAP::Classes::User 473 _RETURN $integer 474 =end WSDL 475 =cut 476 sub add_user { 477 my ($self,$authenKey,$courseName,$record) = @_; 478 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 479 my $newUser = $soapEnv->{db}->newUser; 480 %$newUser = %$record; 481 return $soapEnv->{db}->addUser($newUser); 482 } 483 484 =pod 485 =begin WSDL 486 _IN authenKey $string 487 _IN courseName $string 488 _IN record $WebworkSOAP::Classes::User 489 _RETURN $integer 490 =end WSDL 491 =cut 492 sub put_user { 493 my ($self,$authenKey,$courseName,$record) = @_; 494 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 495 return $soapEnv->{db}->putUser($record); 496 } 497 498 =pod 499 =begin WSDL 500 _IN authenKey $string 501 _IN courseName $string 502 _RETURN @string of names objects. 503 =end WSDL 504 =cut 505 sub list_users { 506 my ($self,$authenKey,$courseName) = @_; 507 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 508 my @tempArray = $soapEnv->{db}->listUsers; 509 return \@tempArray; 510 } 511 512 =pod 513 =begin WSDL 514 _IN authenKey $string 515 _IN courseName $string 516 _IN userID $string 517 _RETURN $WebworkSOAP::Classes::User of names objects. 518 =end WSDL 519 =cut 520 sub get_user { 521 my ($self,$authenKey,$courseName,$userID) = @_; 522 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 523 my $userData = $soapEnv->{db}->getUser($userID); 524 if(not defined $userData) { 525 return -1; 526 } 527 my $user = new WebworkSOAP::Classes::User($userData); 528 return ($user); 529 } 530 531 =pod 532 =begin WSDL 533 _IN authenKey $string 534 _IN courseName $string 535 _IN userIDs @string 536 _RETURN @WebworkSOAP::Classes::User Array of user objects 537 =end WSDL 538 =cut 539 sub get_users { 540 my ($self,$authenKey,$courseName,$userIDs) = @_; 541 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 542 my @userData = $soapEnv->{db}->getUsers(@$userIDs); 543 my @users; 544 for(my $i=0;$i<@userData;$i++) { 545 push(@users,new WebworkSOAP::Classes::User(@userData[$i])); 546 } 547 return \@users; 548 } 549 550 =pod 551 =begin WSDL 552 _IN authenKey $string 553 _IN courseName $string 554 _IN userID $string 555 _RETURN $integer 556 =end WSDL 557 =cut 558 sub delete_user { 559 my ($self,$authenKey,$courseName,$userID) = @_; 560 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 561 return $soapEnv->{db}->deleteUser($userID); 562 } 563 564 ################################################## 565 ##Global Sets 566 ################################################## 567 568 =pod 569 =begin WSDL 570 _IN authenKey $string 571 _IN courseName $string 572 _IN record $WebworkSOAP::Classes::GlobalSet 573 _RETURN $integer 574 =end WSDL 575 =cut 576 sub add_global_set { 577 my ($self,$authenKey,$courseName,$record) = @_; 578 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 579 my $newGlobalSet = $soapEnv->{db}->newGlobalSet; 580 %$newGlobalSet = %$record; 581 return $soapEnv->{db}->addGlobalSet($newGlobalSet); 582 } 583 584 =pod 585 =begin WSDL 586 _IN authenKey $string 587 _IN courseName $string 588 _IN record $WebworkSOAP::Classes::GlobalSet 589 _RETURN $integer 590 =end WSDL 591 =cut 592 sub put_global_set { 593 my ($self,$authenKey,$courseName,$record) = @_; 594 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 595 return $soapEnv->{db}->putGlobalSet($record); 596 } 597 598 =pod 599 =begin WSDL 600 _IN authenKey $string 601 _IN courseName $string 602 _RETURN @string of names objects. 603 =end WSDL 604 =cut 605 sub list_global_sets { 606 my ($self,$authenKey,$courseName) = @_; 607 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 608 my @tempArray = $soapEnv->{db}->listGlobalSets; 609 return \@tempArray; 610 } 611 612 613 =pod 614 =begin WSDL 615 _IN authenKey $string 616 _IN courseName $string 617 _RETURN @WebworkSOAP::Classes::GlobalSet Array of user objects 618 =end WSDL 619 =cut 620 sub get_all_global_sets { 621 my ($self,$authenKey,$courseName) = @_; 622 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 623 my @tempArray = $soapEnv->{db}->listGlobalSets; 624 my @setData = $soapEnv->{db}->getGlobalSets(@tempArray); 625 my @sets; 626 for(my $i=0;$i<@setData;$i++) { 627 push(@sets,new WebworkSOAP::Classes::GlobalSet(@setData[$i])); 628 } 629 return \@sets; 630 } 631 632 =pod 633 =begin WSDL 634 _IN authenKey $string 635 _IN courseName $string 636 _IN setIDs @string 637 _RETURN @WebworkSOAP::Classes::GlobalSet Array of user objects 638 =end WSDL 639 =cut 640 sub get_global_sets { 641 my ($self,$authenKey,$courseName,$setIDs) = @_; 642 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 643 my @setData = $soapEnv->{db}->getGlobalSets(@$setIDs); 644 my @sets; 645 for(my $i=0;$i<@setData;$i++) { 646 push(@sets,new WebworkSOAP::Classes::GlobalSet(@setData[$i])); 647 } 648 return \@sets; 649 } 650 651 =pod 652 =begin WSDL 653 _IN authenKey $string 654 _IN courseName $string 655 _IN setID $string 656 _RETURN $WebworkSOAP::Classes::GlobalSet 657 =end WSDL 658 =cut 659 sub get_global_set { 660 my ($self,$authenKey,$courseName,$setID) = @_; 661 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 662 my $setData = $soapEnv->{db}->getGlobalSet($setID); 663 if(not defined $setData) { 664 return -1; 665 } 666 my $set = new WebworkSOAP::Classes::GlobalSet($setData); 667 return ($set); 668 } 669 670 =pod 671 =begin WSDL 672 _IN authenKey $string 673 _IN courseName $string 674 _IN setID $string 675 _RETURN $integer 676 =end WSDL 677 =cut 678 sub delete_global_set { 679 my ($self,$authenKey,$courseName,$setID) = @_; 680 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 681 return $soapEnv->{db}->deleteGlobalSet($setID); 682 } 683 684 ################################################## 685 ##Global Problems 686 ################################################## 687 688 =pod 689 =begin WSDL 690 _IN authenKey $string 691 _IN courseName $string 692 _IN record $WebworkSOAP::Classes::GlobalProblem 693 _RETURN $integer 694 =end WSDL 695 =cut 696 sub add_global_problem { 697 my ($self,$authenKey,$courseName,$record) = @_; 698 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 699 my $newGlobalProblem = $soapEnv->{db}->newGlobalProblem; 700 %$newGlobalProblem = %$record; 701 return $soapEnv->{db}->addGlobalProblem($newGlobalProblem); 702 } 703 704 =pod 705 =begin WSDL 706 _IN authenKey $string 707 _IN courseName $string 708 _IN record $WebworkSOAP::Classes::GlobalProblem 709 _RETURN $integer 710 =end WSDL 711 =cut 712 sub put_global_problem { 713 my ($self,$authenKey,$courseName,$record) = @_; 714 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 715 return $soapEnv->{db}->putGlobalProblem($record); 716 } 717 718 =pod 719 =begin WSDL 720 _IN authenKey $string 721 _IN courseName $string 722 _IN setID $string 723 _RETURN @string of names objects. 724 =end WSDL 725 =cut 726 sub list_global_problems { 727 my ($self,$authenKey,$courseName,$setID) = @_; 728 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 729 my @tempArray = $soapEnv->{db}->listGlobalProblems($setID); 730 return \@tempArray; 731 } 732 733 =pod 734 =begin WSDL 735 _IN authenKey $string 736 _IN courseName $string 737 _IN setID $string 738 _RETURN @WebworkSOAP::Classes::GlobalProblem Array of user objects 739 =end WSDL 740 =cut 741 sub get_all_global_problems { 742 my ($self,$authenKey,$courseName,$setID) = @_; 743 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 744 my @problemData = $soapEnv->{db}->getAllGlobalProblems($setID); 745 my @problems; 746 for(my $i=0;$i<@problemData;$i++) { 747 push(@problems,new WebworkSOAP::Classes::GlobalProblem(@problemData[$i])); 748 } 749 return \@problems; 750 } 751 752 =pod 753 =begin 754 _IN authenKey $string 755 _IN courseName $string 756 _IN problemIDs @string 757 _RETURN @WebworkSOAP::Classes::GlobalProblem Array of user objects 758 =end WSDL 759 =cut 760 sub get_global_problems { 761 my ($self,$authenKey,$courseName,$problemIDs) = @_; 762 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 763 my @problemData = $soapEnv->{db}->getGlobalProblems(@$problemIDs); 764 my @problems; 765 for(my $i=0;$i<@problemData;$i++) { 766 push(@problems,new WebworkSOAP::Classes::GlobalProblem(@problemData[$i])); 767 } 768 return \@problems; 769 } 770 771 =pod 772 =begin WSDL 773 _IN authenKey $string 774 _IN courseName $string 775 _IN setID $string 776 _IN problemID $string 777 _RETURN $WebworkSOAP::Classes::GlobalProblem of names objects. 778 =end WSDL 779 =cut 780 sub get_global_problem { 781 my ($self,$authenKey,$courseName,$setID,$problemID) = @_; 782 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 783 my $problemData = $soapEnv->{db}->getGlobalProblem($setID,$problemID); 784 if(not defined $problemData) { 785 return -1; 786 } 787 my $problem = new WebworkSOAP::Classes::GlobalProblem($problemData); 788 return ($problem); 789 } 790 791 =pod 792 =begin WSDL 793 _IN authenKey $string 794 _IN courseName $string 795 _IN setID $string 796 _IN problemID $string 797 _RETURN $integer 798 =end WSDL 799 =cut 800 sub delete_global_problem { 801 my ($self,$authenKey,$courseName,$setID,$problemID) = @_; 802 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 803 return $soapEnv->{db}->deleteGlobalProblem($setID,$problemID); 804 } 805 806 ################################################## 807 ##USER PROBLEM 808 ################################################## 809 810 =pod 811 =begin WSDL 812 _IN authenKey $string 813 _IN courseName $string 814 _IN record $WebworkSOAP::Classes::UserProblem 815 _RETURN $integer 816 =end WSDL 817 =cut 818 sub add_user_problem { 819 my ($self,$authenKey,$courseName,$record) = @_; 820 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 821 my $newUserProblem = $soapEnv->{db}->newUserProblem; 822 %$newUserProblem = %$record; 823 return $soapEnv->{db}->addUserProblem($newUserProblem); 824 } 825 826 =pod 827 =begin WSDL 828 _IN authenKey $string 829 _IN courseName $string 830 _IN record $WebworkSOAP::Classes::UserProblem 831 _RETURN $integer 832 =end WSDL 833 =cut 834 sub put_user_problem { 835 my ($self,$authenKey,$courseName,$record) = @_; 836 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 837 return $soapEnv->{db}->putUserProblem($record); 838 } 839 840 =pod 841 =begin WSDL 842 _IN authenKey $string 843 _IN courseName $string 844 _IN userID $string 845 _RETURN @string of names objects. 846 =end WSDL 847 =cut 848 sub list_user_problems { 849 my ($self,$authenKey,$courseName,$userID) = @_; 850 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 851 my @tempArray = $soapEnv->{db}->listUserProblems($userID); 852 return \@tempArray; 853 } 854 855 =pod 856 =begin WSDL 857 _IN authenKey $string 858 _IN courseName $string 859 _IN userID $string 860 _IN setID $string 861 _RETURN @WebworkSOAP::Classes::UserProblem of names objects. 862 =end WSDL 863 =cut 864 sub get_all_user_problems { 865 my ($self,$authenKey,$courseName,$userID,$setID) = @_; 866 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 867 my @problemData = $soapEnv->{db}->getAllUserProblems($userID,$setID); 868 my @problems; 869 for(my $i=0;$i<@problemData;$i++) { 870 push(@problems,new WebworkSOAP::Classes::UserProblem(@problemData[$i])); 871 } 872 return \@problems; 873 } 874 875 =pod 876 =begin WSDL 877 _IN authenKey $string 878 _IN courseName $string 879 _IN userProblemIDs @string 880 _RETURN @WebworkSOAP::Classes::UserProblem of names objects. 881 =end WSDL 882 =cut 883 sub get_user_problems { 884 my ($self,$authenKey,$courseName,$userProblemIDs) = @_; 885 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 886 my @problemData = $soapEnv->{db}->getUserProblems(@$userProblemIDs); 887 my @problems; 888 for(my $i=0;$i<@problemData;$i++) { 889 push(@problems,new WebworkSOAP::Classes::UserProblem(@problemData[$i])); 890 } 891 return \@problems; 892 } 893 894 =pod 895 =begin WSDL 896 _IN authenKey $string 897 _IN courseName $string 898 _IN userID $string 899 _IN setID $string 900 _IN problemID $string 901 _RETURN $WebworkSOAP::Classes::UserProblem of names objects. 902 =end WSDL 903 =cut 904 sub get_user_problem { 905 my ($self,$authenKey,$courseName,$userID,$setID,$problemID) = @_; 906 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 907 my $problemData = $soapEnv->{db}->getUserProblem($userID,$setID,$problemID); 908 if(not defined $problemData) { 909 return -1; 910 } 911 my $problem = new WebworkSOAP::Classes::UserProblem($problemData); 912 return ($problem); 913 } 914 915 =pod 916 =begin WSDL 917 _IN authenKey $string 918 _IN courseName $string 919 _IN userID $string 920 _IN setID $string 921 _IN problemID $string 922 _RETURN $integer 923 =end WSDL 924 =cut 925 sub delete_user_problem { 926 my ($self,$authenKey,$courseName,$userID,$setID,$problemID) = @_; 927 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 928 return $soapEnv->{db}->deleteUserProblem($userID,$setID,$problemID); 929 } 930 931 ################################################## 932 ##USER SET 933 ################################################## 934 935 =pod 936 =begin WSDL 937 _IN authenKey $string 938 _IN courseName $string 939 _IN record $WebworkSOAP::Classes::UserSet 940 _RETURN $integer 941 =end WSDL 942 =cut 943 sub add_user_set { 944 my ($self,$authenKey,$courseName,$record) = @_; 945 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 946 my $newUserSet = $soapEnv->{db}->newUserSet; 947 %$newUserSet = %$record; 948 return $soapEnv->{db}->addUserSet($newUserSet); 949 } 950 951 =pod 952 =begin WSDL 953 _IN authenKey $string 954 _IN courseName $string 955 _IN record $WebworkSOAP::Classes::UserSet 956 _RETURN $integer 957 =end WSDL 958 =cut 959 sub put_user_set { 960 my ($self,$authenKey,$courseName,$record) = @_; 961 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 962 return $soapEnv->{db}->addUserSet($record); 963 } 964 965 =pod 966 =begin WSDL 967 _IN authenKey $string 968 _IN courseName $string 969 _IN userID $string 970 _RETURN @string of names objects. 971 =end WSDL 972 =cut 973 sub list_user_sets { 974 my ($self,$authenKey,$courseName,$userID) = @_; 975 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 976 my @tempArray = $soapEnv->{db}->listUserSets($userID); 977 return \@tempArray; 978 } 979 980 =pod 981 =begin WSDL 982 _IN authenKey $string 983 _IN courseName $string 984 _RETURN @WebworkSOAP::Classes::UserSet of names objects. 985 =end WSDL 986 =cut 987 sub get_all_user_sets { 988 my ($self,$authenKey,$courseName) = @_; 989 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 990 my @setData = $soapEnv->{db}->getAllUserSets(); 991 my @sets; 992 for(my $i=0;$i<@setData;$i++) { 993 push(@sets,new WebworkSOAP::Classes::UserSet(@setData[$i])); 994 } 995 return \@sets; 996 } 997 998 =pod 999 =begin WSDL 1000 _IN authenKey $string 1001 _IN courseName $string 1002 _IN userSetIDs $string 1003 _RETURN @WebworkSOAP::Classes::UserSet of names objects. 1004 =end WSDL 1005 =cut 1006 sub get_user_sets { 1007 my ($self,$authenKey,$courseName,$userSetIDs) = @_; 1008 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 1009 my @setData = $soapEnv->{db}->getUserSets(@$userSetIDs); 1010 my @sets; 1011 for(my $i=0;$i<@setData;$i++) { 1012 push(@sets,new WebworkSOAP::Classes::UserSet(@setData[$i])); 1013 } 1014 return \@sets; 1015 } 1016 1017 =pod 1018 =begin WSDL 1019 _IN authenKey $string 1020 _IN courseName $string 1021 _IN userID $string 1022 _IN setID $string 1023 _RETURN $WebworkSOAP::Classes::UserSet of names objects. 1024 =end WSDL 1025 =cut 1026 sub get_user_set { 1027 my ($self,$authenKey,$courseName,$userID,$setID) = @_; 1028 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 1029 my $setData = $soapEnv->{db}->getUserSet($userID,$setID); 1030 if(not defined $setData) { 1031 return -1; 1032 } 1033 my $set = new WebworkSOAP::Classes::UserSet($setData); 1034 return $set; 1035 } 1036 1037 =pod 1038 =begin WSDL 1039 _IN authenKey $string 1040 _IN courseName $string 1041 _IN userID $string 1042 _IN setID $string 1043 _RETURN $integer 1044 =end WSDL 1045 =cut 1046 sub delete_user_set { 1047 my ($self,$authenKey,$courseName,$userID,$setID) = @_; 1048 my $soapEnv = new WebworkSOAP($authenKey,$courseName); 1049 return $soapEnv->{db}->deleteUserSet($userID,$setID); 1050 } 1051 1052 1053 1;
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |