--- loncom/interface/loncoursequeueadmin.pm 2010/02/21 02:38:23 1.18 +++ loncom/interface/loncoursequeueadmin.pm 2010/02/21 23:38:51 1.19 @@ -1,7 +1,7 @@ # The LearningOnline Network -# Utilities to administer domain course requests and course self-enroll requests +# Utilities to administer domain course requests and course self-enroll requests # -# $Id: loncoursequeueadmin.pm,v 1.18 2010/02/21 02:38:23 raeburn Exp $ +# $Id: loncoursequeueadmin.pm,v 1.19 2010/02/21 23:38:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -74,7 +74,7 @@ use Apache::loncommon; use Apache::lonmsg; use Apache::lonlocal; use Apache::lonuserutils; -use LONCAPA; +use LONCAPA qw(:DEFAULT :match); sub send_selfserve_notification { my ($notifylist,$textstr,$cid,$contextdesc,$timestamp,$context,$sender, @@ -375,7 +375,7 @@ sub update_request_queue { $stucounts,$idx,$classlist,%requesthash,$cid,$hostname,$protocol, $domdesc,$now,$sender,$approvedmsg,$rejectedmsg,$beneficiary, @existing,@missingreq,@invalidusers,@limitexceeded,@completed, - @processing_errors,@warn_approves,@warn_rejects,@approvals, + @processing_errors,@warn_approves,@warn_rejects,@approvals,@warn_dels, @rejections,@rejectionerrors,@nopermissions,%courseroles, %communityroles,%domdefs,%approvalmsg,%rejectionmsg,$crstype); @approvals = &Apache::loncommon::get_env_multiple('form.approvereq'); @@ -466,7 +466,6 @@ sub update_request_queue { my $uhome = &Apache::lonnet::homeserver($uname,$udom); if ($uhome ne 'no_host') { if (exists($requesthash{$uname.':'.$udom})) { - if (exists($classlist->{$uname.':'.$udom})) { if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') { if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') || @@ -565,6 +564,10 @@ sub update_request_queue { $approvedmsg = $approvalmsg{'course'}; } push(@completed,$cnum); + + unless (&Apache::lonnet::del_dom($namespace,[$cnum.'_approval'],$cdom) eq 'ok') { + push(@warn_dels,$cnum); + } &send_selfserve_notification($ownername.':'.$ownerdom,$approvedmsg, $cid,$coursedesc,$now,$beneficiary,$sender,undef,undef,$crstype); my %reqhash = ( @@ -679,6 +682,9 @@ sub update_request_queue { } else { push(@warn_rejects,$cnum); } + unless (&Apache::lonnet::del_dom($namespace,[$cnum.'_approval'],$cdom) eq 'ok') { + push(@warn_dels,$cnum); + } } else { push(@warn_rejects,$cnum); } @@ -896,6 +902,19 @@ sub update_request_queue { $output .= '

'; } } + if (@warn_dels) { + $output .= '

'.&mt("For the following course/community requests an error occurred when removing requests for the following from the pending queue:").'

'; + } return $output; } @@ -1185,4 +1204,40 @@ sub queued_selfenrollment { return $output; } +sub update_coursereq_status { + my ($reqhash,$dom,$cnum,$reqstatus,$context) = @_; + my ($storeresult,$statusresult,$output); + my $requestkey = $dom.'_'.$cnum; + if ($requestkey =~ /^($match_domain)_($match_courseid)$/) { + $storeresult = &Apache::lonnet::store_userdata($reqhash,$requestkey, + 'courserequests'); + if ($storeresult eq 'ok') { + my %status = ( + 'status:'.$dom.':'.$cnum => $reqstatus, + ); + $statusresult = &Apache::lonnet::put('courserequests',\%status); + } + } else { + $storeresult = 'error: invalid requestkey format'; + } + if ($storeresult ne 'ok') { + $output = &mt('An error occurred saving a record of the details of your request: [_1].',$storeresult); + if ($context eq 'domain') { + $output .= "\n"; + } else { + $output = ''.$output.'
'; + } + &Apache::lonnet::logthis("Error saving course request - $requestkey for $env{'user.name'}:$env{'user.domain'} - $storeresult"); + } elsif ($statusresult ne 'ok') { + $output = &mt('An error occurred saving a record of the status of your request: [_1].',$statusresult); + if ($context eq 'domain') { + $output .= "\n"; + } else { + $output = ''.$output.'
'; + } + &Apache::lonnet::logthis("Error saving course request status for $requestkey (for $env{'user.name'}:$env{'user.domain'}) - $statusresult"); + } + return ($storeresult,$output); +} + 1;