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