version 1.12.2.7, 2010/01/18 15:54:23
|
version 1.17, 2010/01/29 13:18:38
|
Line 35 Apache::loncoursequeueadmin.pm
|
Line 35 Apache::loncoursequeueadmin.pm
|
|
|
Utilities used by domain coordinators to administer queued course creation requests, |
Utilities used by domain coordinators to administer queued course creation requests, |
and by course coordinators for queued self-enrollment requests, and by general |
and by course coordinators for queued self-enrollment requests, and by general |
users to display their queued self-enrollment requests. |
users to display their queued self-enrollment requests. |
|
|
This is part of the LearningOnline Network with CAPA project |
This is part of the LearningOnline Network with CAPA project |
described at http://www.lon-capa.org. |
described at http://www.lon-capa.org. |
Line 55 described at http://www.lon-capa.org.
|
Line 55 described at http://www.lon-capa.org.
|
=item course_creation() |
=item course_creation() |
|
|
=item build_batchcreatehash() |
=item build_batchcreatehash() |
|
|
=item can_clone_course() |
=item can_clone_course() |
|
|
|
=item get_processtype() |
|
|
=item queued_selfenrollment() |
=item queued_selfenrollment() |
|
|
=back |
=back |
Line 375 sub update_request_queue {
|
Line 377 sub update_request_queue {
|
@existing,@missingreq,@invalidusers,@limitexceeded,@completed, |
@existing,@missingreq,@invalidusers,@limitexceeded,@completed, |
@processing_errors,@warn_approves,@warn_rejects,@approvals, |
@processing_errors,@warn_approves,@warn_rejects,@approvals, |
@rejections,@rejectionerrors,@nopermissions,%courseroles, |
@rejections,@rejectionerrors,@nopermissions,%courseroles, |
%communityroles,%domdefs,%approvalmsg,%rejectionmsg,$crstype, |
%communityroles,%domdefs,%approvalmsg,%rejectionmsg,$crstype); |
@warn_coursereqs); |
|
@approvals = &Apache::loncommon::get_env_multiple('form.approvereq'); |
@approvals = &Apache::loncommon::get_env_multiple('form.approvereq'); |
@rejections = &Apache::loncommon::get_env_multiple('form.rejectreq'); |
@rejections = &Apache::loncommon::get_env_multiple('form.rejectreq'); |
$now = time; |
$now = time; |
Line 465 sub update_request_queue {
|
Line 466 sub update_request_queue {
|
my $uhome = &Apache::lonnet::homeserver($uname,$udom); |
my $uhome = &Apache::lonnet::homeserver($uname,$udom); |
if ($uhome ne 'no_host') { |
if ($uhome ne 'no_host') { |
if (exists($requesthash{$uname.':'.$udom})) { |
if (exists($requesthash{$uname.':'.$udom})) { |
if ($cdom eq 'gci' && $cnum eq '9615072b469884921gcil1') { |
|
my $enresult = &enable_gci_submission($udom,$uname, |
|
$access_end,$access_start); |
|
} |
|
if (exists($classlist->{$uname.':'.$udom})) { |
if (exists($classlist->{$uname.':'.$udom})) { |
if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') { |
if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') { |
if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') || |
if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') || |
Line 514 sub update_request_queue {
|
Line 512 sub update_request_queue {
|
&Apache::lonnet::put($namespace,\%userrequest,$udom,$uname); |
&Apache::lonnet::put($namespace,\%userrequest,$udom,$uname); |
if ($userresult ne 'ok') { |
if ($userresult ne 'ok') { |
push(@warn_approves,$uname.':'.$udom); |
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 { |
} else { |
push(@processing_errors,$uname.':'.$udom); |
push(@processing_errors,$uname.':'.$udom); |
Line 907 sub update_request_queue {
|
Line 896 sub update_request_queue {
|
$output .= '</ul></p>'; |
$output .= '</ul></p>'; |
} |
} |
} |
} |
if (@warn_coursereqs) { |
|
$output .= '<p>'..&mt("For the following users, an error occurred when setting rights to request creation of Concept Test courses:").'<ul>'; |
|
foreach my $user (@warn_coursereqs) { |
|
$output .= '<li>'.$user.'</li>'; |
|
} |
|
$output .= '</ul></p>'; |
|
} |
|
return $output; |
return $output; |
} |
} |
|
|
sub enable_gci_submission { |
|
my ($udom,$uname,$access_end,$access_start) = @_; |
|
my $cdom = 'gci'; |
|
my $cnum = '1H96711d710194bfegcil1'; |
|
my ($stucounts,$idx,$classlist) = &get_student_counts($cdom,$cnum); |
|
if (exists($classlist->{$uname.':'.$udom})) { |
|
if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') { |
|
if (($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Active') || |
|
($classlist->{$uname.':'.$udom}->[$idx->{'status'}] eq 'Future')) { |
|
return; |
|
} |
|
} |
|
} |
|
return |
|
&Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,undef,$access_end,$access_start,'selfenroll',undef,$cdom.'_'.$cnum,1); |
|
} |
|
|
|
sub get_student_counts { |
sub get_student_counts { |
my ($cdom,$cnum) = @_; |
my ($cdom,$cnum) = @_; |
my (%idx,%stucounts); |
my (%idx,%stucounts); |
Line 990 sub build_batchcreatehash {
|
Line 955 sub build_batchcreatehash {
|
my ($dom,$context,$details,$owneremail,$domdefs) = @_; |
my ($dom,$context,$details,$owneremail,$domdefs) = @_; |
my %batchhash; |
my %batchhash; |
my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users}; |
my @items = qw{owner domain coursehome clonecrs clonedom datemode dateshift enrollstart enrollend accessstart accessend sections crosslists users}; |
if ($dom eq 'gcitest') { |
|
push(@items,'firstres'); |
|
} |
|
if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) { |
if ((ref($details) eq 'HASH') && (ref($domdefs) eq 'HASH')) { |
my $emailenc = &Apache::lonnet::escape($owneremail); |
my $emailenc = &escape($owneremail); |
my $owner = $details->{'owner'}.':'.$details->{'domain'}; |
my $owner = $details->{'owner'}.':'.$details->{'domain'}; |
foreach my $item (@items) { |
foreach my $item (@items) { |
$batchhash{$item} = $details->{$item}; |
$batchhash{$item} = $details->{$item}; |
Line 1081 sub can_clone_course {
|
Line 1043 sub can_clone_course {
|
return $canclone; |
return $canclone; |
} |
} |
|
|
|
sub get_processtype { |
|
my ($uname,$udom,$isadv,$dom,$crstype,$inststatuses,$domconfig) = @_; |
|
return unless ((ref($inststatuses) eq 'ARRAY') && (ref($domconfig) eq 'HASH')); |
|
if ($uname eq '' || $udom eq '') { |
|
$uname = $env{'user.name'}; |
|
$udom = $env{'user.domain'}; |
|
$isadv = $env{'user.adv'}; |
|
} |
|
my (%userenv,%settings,$val); |
|
my @options = ('autolimit','validate','approval'); |
|
if ($dom eq $udom) { |
|
%userenv = |
|
&Apache::lonnet::userenvironment($udom,$uname,'requestcourses.'.$crstype,'inststatus'); |
|
if ($userenv{'requestcourses.'.$crstype}) { |
|
$val = $userenv{'requestcourses.'.$crstype}; |
|
@{$inststatuses} = ('_custom_'); |
|
} else { |
|
my ($task,%alltasks); |
|
if (ref($domconfig->{'requestcourses'}) eq 'HASH') { |
|
%settings = %{$domconfig->{'requestcourses'}}; |
|
if (ref($settings{$crstype}) eq 'HASH') { |
|
if (($isadv) && ($settings{$crstype}{'_LC_adv'} ne '')) { |
|
$val = $settings{$crstype}{'_LC_adv'}; |
|
@{$inststatuses} = ('_LC_adv_'); |
|
} else { |
|
if ($userenv{'inststatus'} ne '') { |
|
@{$inststatuses} = split(',',$userenv{'inststatus'}); |
|
} else { |
|
@{$inststatuses} = ('default'); |
|
} |
|
foreach my $status (@{$inststatuses}) { |
|
if (exists($settings{$crstype}{$status})) { |
|
my $value = $settings{$crstype}{$status}; |
|
next unless ($value); |
|
unless (exists($alltasks{$value})) { |
|
if (ref($alltasks{$value}) eq 'ARRAY') { |
|
unless(grep(/^\Q$status\E$/,@{$alltasks{$value}})) { |
|
push(@{$alltasks{$value}},$status); |
|
} |
|
} else { |
|
@{$alltasks{$value}} = ($status); |
|
} |
|
} |
|
} |
|
} |
|
my $maxlimit = 0; |
|
|
|
foreach my $key (sort(keys(%alltasks))) { |
|
if ($key =~ /^autolimit=(\d*)$/) { |
|
if ($1 eq '') { |
|
$val ='autolimit='; |
|
last; |
|
} elsif ($1 > $maxlimit) { |
|
$maxlimit = $1; |
|
} |
|
} |
|
} |
|
if ($maxlimit) { |
|
$val = 'autolimit='.$maxlimit; |
|
} else { |
|
foreach my $option (@options) { |
|
if ($alltasks{$option}) { |
|
$val = $option; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
%userenv = &Apache::lonnet::userenvironment($udom,$uname,'reqcrsotherdom.'.$crstype); |
|
if ($userenv{'reqcrsotherdom.'.$crstype}) { |
|
my @doms = split(',',$userenv{'reqcrsotherdom.'.$crstype}); |
|
my $optregex = join('|',@options); |
|
foreach my $item (@doms) { |
|
my ($extdom,$extopt) = split(':',$item); |
|
if ($extdom eq $dom) { |
|
if ($extopt =~ /^($optregex)(=?\d*)$/) { |
|
$val = $1.$2; |
|
} |
|
last; |
|
} |
|
} |
|
@{$inststatuses} = ('_external_'); |
|
} |
|
} |
|
return $val; |
|
} |
|
|
sub queued_selfenrollment { |
sub queued_selfenrollment { |
my ($notitle) = @_; |
my ($notitle) = @_; |
my $output; |
my $output; |