--- loncom/interface/loncoursequeueadmin.pm 2009/08/27 00:06:18 1.7
+++ loncom/interface/loncoursequeueadmin.pm 2009/10/04 15:29:58 1.9.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Utilities to administer domain course requests and course self-enroll requests
#
-# $Id: loncoursequeueadmin.pm,v 1.7 2009/08/27 00:06:18 raeburn Exp $
+# $Id: loncoursequeueadmin.pm,v 1.9.2.1 2009/10/04 15:29:58 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -346,7 +346,7 @@ sub update_request_queue {
@existing,@missingreq,@invalidusers,@limitexceeded,@completed,
@processing_errors,@warn_approves,@warn_rejects,@approvals,
@rejections,@rejectionerrors,@nopermissions,%courseroles,
- %communityroles,%domdefs);
+ %communityroles,%domdefs,@warn_coursereqs);
@approvals = &Apache::loncommon::get_env_multiple('form.approvereq');
@rejections = &Apache::loncommon::get_env_multiple('form.rejectreq');
$now = time;
@@ -463,6 +463,15 @@ sub update_request_queue {
&Apache::lonnet::put($namespace,\%userrequest,$udom,$uname);
if ($userresult ne 'ok') {
push(@warn_approves,$uname.':'.$udom);
+ } elsif ($udom eq 'gci') {
+ my %changehash = (
+ 'reqcrsotherdom.unofficial' => 'gcitest:autolimit=';
+ );
+ my $reqresult = &Apache::lonnet::put('environment',\%changeHash,
+ $udom,$uname);
+ if ($reqresult ne 'ok') {
+ push(@warn_coursereqs,$uname.':'.$udom);
+ }
}
} else {
push(@processing_errors,$uname.':'.$udom);
@@ -832,6 +841,13 @@ sub update_request_queue {
$output .= '
';
}
}
+ if (@warn_coursereqs) {
+ $output .= ''..&mt("For the following users, an error occurred when setting rights to request creation of Concept Test courses:").'
';
+ foreach my $user (@warn_coursereqs) {
+ $output .= '- '.$user.'
';
+ }
+ $output .= '
';
+ }
return $output;
}
@@ -879,7 +895,7 @@ sub course_creation {
$owneremail = $emails{$email};
last if ($owneremail ne '');
}
- my %reqdetails = &build_batchcreatehash($dom,$details,$owneremail,$domdefs);
+ my %reqdetails = &build_batchcreatehash($dom,$context,$details,$owneremail,$domdefs);
my $cid = &LONCAPA::batchcreatecourse::build_course($dom,$cnum,'requestcourses',
\%reqdetails,$longroles,\$logmsg,\$newusermsg,\$addresult,
\$enrollcount,\$output,\$keysmsg,$ownerdom,$ownername,$cnum,$crstype);
@@ -892,7 +908,7 @@ sub course_creation {
}
sub build_batchcreatehash {
- my ($dom,$details,$owneremail,$domdefs) = @_;
+ my ($dom,$context,$details,$owneremail,$domdefs) = @_;
my %batchhash;
my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users};
if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) {
@@ -913,12 +929,42 @@ sub build_batchcreatehash {
} else {
$batchhash{'crstype'} = 'Course';
}
- $batchhash{'users'}{$details->{$owner}} = {
- firstname => $env{'environment.first'},
- lastname => $env{'environment.last'},
- emailenc => $emailenc,
- email => $owneremail,
- };
+ my ($owner_firstname,$owner_lastname);
+ if ($context eq 'domain') {
+ my %userenv = &Apache::lonnet::userenvironment($details->{'domain'},
+ $details->{'owner'},
+ 'firstname','lastname');
+ $owner_firstname = $userenv{'firstname'};
+ $owner_lastname = $userenv{'lastname'};
+ } else {
+ $owner_firstname = $env{'environment.firstname'};
+ $owner_lastname = $env{'environment.lastname'};
+ }
+ if (ref($details->{'personnel'}) eq 'HASH') {
+ %{$batchhash{'users'}} = %{$details->{'personnel'}};
+ if (ref($batchhash{'users'}) eq 'HASH') {
+ foreach my $userkey (keys(%{$batchhash{'users'}})) {
+ if (ref($batchhash{'users'}{$userkey}) eq 'HASH') {
+ if (ref($batchhash{'users'}{$userkey}{'roles'}) eq 'ARRAY') {
+ foreach my $role (@{$batchhash{'users'}{$userkey}{'roles'}}) {
+ my $start = '';
+ my $end = '';
+ if ($role eq 'st') {
+ $start = $details->{'accessstart'};
+ $end = $details->{'accessend'};
+ }
+ $batchhash{'users'}{$userkey}{$role}{'start'} = $start;
+ $batchhash{'users'}{$userkey}{$role}{'end'} = $end;
+ }
+ }
+ }
+ }
+ }
+ }
+ $batchhash{'users'}{$owner}{firstname} = $owner_firstname;
+ $batchhash{'users'}{$owner}{lastname} = $owner_lastname;
+ $batchhash{'users'}{$owner}{emailenc} = $emailenc;
+ $batchhash{'users'}{$owner}{owneremail} = $owneremail;
}
return %batchhash;
}
@@ -928,7 +974,7 @@ sub can_clone_course {
my $canclone;
my %roleshash = &Apache::lonnet::get_my_roles($uname,$udom,'userroles',['active'],
['cc'],[$clonedom]);
- if (exists($roleshash{$clonedom.':'.$clonecrs.':cc'})) {
+ if (exists($roleshash{$clonecrs.':'.$clonedom.':cc'})) {
$canclone = 1;
} else {
my %courseenv = &Apache::lonnet::userenvironment($clonedom,$clonecrs,('cloners'));