--- loncom/lond 2014/01/01 17:41:37 1.505 +++ loncom/lond 2014/04/30 17:17:14 1.509 @@ -2,7 +2,7 @@ # The LearningOnline Network # lond "LON Daemon" Server (port "LOND" 5663) # -# $Id: lond,v 1.505 2014/01/01 17:41:37 raeburn Exp $ +# $Id: lond,v 1.509 2014/04/30 17:17:14 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,7 +61,7 @@ my $DEBUG = 0; # Non zero to ena my $status=''; my $lastlog=''; -my $VERSION='$Revision: 1.505 $'; #' stupid emacs +my $VERSION='$Revision: 1.509 $'; #' stupid emacs my $remoteVERSION; my $currenthostid="default"; my $currentdomainid; @@ -5263,7 +5263,7 @@ sub crsreq_checks_handler { my $userinput = "$cmd:$tail"; my $dom = $tail; my $result; - my @reqtypes = ('official','unofficial','community'); + my @reqtypes = ('official','unofficial','community','textbook'); eval { local($SIG{__DIE__})='DEFAULT'; my %validations; @@ -5290,19 +5290,20 @@ sub crsreq_checks_handler { sub validate_crsreq_handler { my ($cmd, $tail, $client) = @_; my $userinput = "$cmd:$tail"; - my ($dom,$owner,$crstype,$inststatuslist,$instcode,$instseclist) = split(/:/, $tail); + my ($dom,$owner,$crstype,$inststatuslist,$instcode,$instseclist,$customdata) = split(/:/, $tail); $instcode = &unescape($instcode); $owner = &unescape($owner); $crstype = &unescape($crstype); $inststatuslist = &unescape($inststatuslist); $instcode = &unescape($instcode); $instseclist = &unescape($instseclist); + my $custominfo = &Apache::lonnet::thaw_unescape($customdata); my $outcome; eval { local($SIG{__DIE__})='DEFAULT'; $outcome = &localenroll::validate_crsreq($dom,$owner,$crstype, $inststatuslist,$instcode, - $instseclist); + $instseclist,$custominfo); }; if (!$@) { &Reply($client, \$outcome, $userinput); @@ -5313,6 +5314,53 @@ sub validate_crsreq_handler { } ®ister_handler("autocrsreqvalidation", \&validate_crsreq_handler, 0, 1, 0); +sub crsreq_update_handler { + my ($cmd, $tail, $client) = @_; + my $userinput = "$cmd:$tail"; + my ($cdom,$cnum,$crstype,$action,$ownername,$ownerdomain,$fullname,$title,$code, + $accessstart,$accessend,$infohashref) = + split(/:/, $tail); + $crstype = &unescape($crstype); + $action = &unescape($action); + $ownername = &unescape($ownername); + $ownerdomain = &unescape($ownerdomain); + $fullname = &unescape($fullname); + $title = &unescape($title); + $code = &unescape($code); + $accessstart = &unescape($accessstart); + $accessend = &unescape($accessend); + my $incoming = &Apache::lonnet::thaw_unescape($infohashref); + my ($result,$outcome); + eval { + local($SIG{__DIE__})='DEFAULT'; + my %rtnhash; + $outcome = &localenroll::crsreq_updates($cdom,$cnum,$crstype,$action, + $ownername,$ownerdomain,$fullname, + $title,$code,$accessstart,$accessend, + $incoming,\%rtnhash); + if ($outcome eq 'ok') { + my @posskeys = qw(createdweb createdmsg queuedweb queuedmsg formitems reviewweb); + foreach my $key (keys(%rtnhash)) { + if (grep(/^\Q$key\E/,@posskeys)) { + $result .= &escape($key).'='.&Apache::lonnet::freeze_escape($rtnhash{$key}).'&'; + } + } + $result =~ s/\&$//; + } + }; + if (!$@) { + if ($outcome eq 'ok') { + &Reply($client, \$result, $userinput); + } else { + &Reply($client, "format_error\n", $userinput); + } + } else { + &Failure($client,"unknown_cmd\n",$userinput); + } + return 1; +} +®ister_handler("autocrsrequpdate", \&crsreq_update_handler, 0, 1, 0); + # # Read and retrieve institutional code format (for support form). # Formal Parameters: