[system] / trunk / webwork2 / lib / WebworkSOAP.pm Repository:
ViewVC logotype

View of /trunk/webwork2/lib/WebworkSOAP.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5035 - (download) (as text) (annotate)
Tue Jun 26 06:45:17 2007 UTC (5 years, 11 months ago) by mleventi
File size: 26269 byte(s)
Squashing some bugs with the WebworkSOAP webservice.

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

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9