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