version 1.15, 2010/08/28 19:00:42
|
version 1.20.2.1, 2020/07/18 00:16:00
|
Line 110
|
Line 110
|
close($fh); |
close($fh); |
exit; |
exit; |
} |
} |
$env{'user.name'} = $dcname; |
&set_dc_env($dcname,$dcdom,$defdom); |
$env{'user.domain'} = $dcdom; |
|
$env{'request.role.domain'} = $defdom; |
|
my @permissions = ('mau','ccc','cin','cta','cep','ccr','cst'); |
my @permissions = ('mau','ccc','cin','cta','cep','ccr','cst'); |
my %permissionflags = (); |
my %permissionflags = (); |
&set_permissions(\%permissionflags,\@permissions); |
&set_permissions(\%permissionflags,\@permissions); |
my $output = &process_xml($fh,$defdom,$dcname,$dcdom); |
my $output = &process_xml($fh,$defdom,$dcname,$dcdom); |
print $output; |
|
&unset_permissions(\%permissionflags); |
&unset_permissions(\%permissionflags); |
|
&unset_dc_env(); |
|
print $output; |
} |
} |
} else { |
} else { |
my @permissions = ('mau','ccc','cin','cta','cep','ccr','cst'); |
my @permissions = ('mau','ccc','cin','cta','cep','ccr','cst'); |
Line 132
|
Line 131
|
my $settings; |
my $settings; |
if (ref($domconfig{'autocreate'}) eq 'HASH') { |
if (ref($domconfig{'autocreate'}) eq 'HASH') { |
$settings = $domconfig{'autocreate'}; |
$settings = $domconfig{'autocreate'}; |
|
my ($dcname,$dcdom); |
|
if ($settings->{'xmldc'}) { |
|
($dcname,$dcdom) = split(':',$settings->{'xmldc'}); |
|
} |
if ($settings->{'xml'}) { |
if ($settings->{'xml'}) { |
if ($settings->{'xmldc'}) { |
if ($settings->{'xmldc'}) { |
my ($dcname,$dcdom) = split(':',$settings->{'xmldc'}); |
|
$env{'user.name'} = $dcname; |
|
$env{'user.domain'} = $dcdom; |
|
$env{'request.role.domain'} = $dom; |
|
if (!&check_activedc($dcdom,$dcname,$dom)) { |
if (!&check_activedc($dcdom,$dcname,$dom)) { |
print $fh "Autocreate.pl in domain $dom configured to run under the auspices of a user without an active domain coordinator role in the domain - course creation will be skipped.\n\n"; |
print $fh "Autocreate.pl in domain $dom configured to run under the auspices of a user without an active domain coordinator role in the domain - course creation will be skipped.\n\n"; |
next; |
next; |
Line 149
|
Line 148
|
} |
} |
} |
} |
if ($settings->{'req'}) { |
if ($settings->{'req'}) { |
my $output = &Apache::loncoursequeueadmin::process_official_reqs('auto',$dom); |
&set_dc_env($dcname,$dcdom); |
|
my $output = &Apache::loncoursequeueadmin::process_official_reqs('auto',$dom,$dcname,$dcdom); |
|
&unset_dc_env(); |
if ($output) { |
if ($output) { |
print $fh $output; |
print $fh $output; |
} |
} |
Line 164
|
Line 165
|
|
|
sub process_xml { |
sub process_xml { |
my ($fh,$dom,$dcname,$dcdom) = @_; |
my ($fh,$dom,$dcname,$dcdom) = @_; |
$env{'user.name'} = $dcname; |
&set_dc_env($dcname,$dcdom,$dom); |
$env{'user.domain'} = $dcdom; |
|
$env{'request.role.domain'} = $dom; |
|
|
|
# Initialize language handler |
# Initialize language handler |
&Apache::lonlocal::get_language_handle(); |
&Apache::lonlocal::get_language_handle(); |
|
|
Line 177 sub process_xml {
|
Line 175 sub process_xml {
|
closedir(DIR); |
closedir(DIR); |
my %courseids = (); |
my %courseids = (); |
print $fh "Sending to batch - auto,$dom,$dcname,$dcdom ".join(":",@requests)."\n"; |
print $fh "Sending to batch - auto,$dom,$dcname,$dcdom ".join(":",@requests)."\n"; |
my ($result,$logmsg) = &LONCAPA::batchcreatecourse::create_courses(\@requests,\%courseids,'auto',$dom,$dcname,$dcdom); |
my ($result,$logmsg,$clonemsg,$keysmsg,$codesref,$instcodesref) = |
|
&LONCAPA::batchcreatecourse::create_courses(\@requests,\%courseids,'auto',$dom,$dcname,$dcdom); |
my $outcome; |
my $outcome; |
if ($result ne '') { |
if ($result ne '') { |
$outcome = $result."\n"; |
$outcome = $result."\n"; |
Line 185 sub process_xml {
|
Line 184 sub process_xml {
|
if ($logmsg ne '') { |
if ($logmsg ne '') { |
$outcome .= $logmsg."\n"; |
$outcome .= $logmsg."\n"; |
} |
} |
|
if ($clonemsg ne '') { |
|
$outcome .= $clonemsg."\n"; |
|
} |
print $fh $outcome; |
print $fh $outcome; |
|
|
my $output; |
my $output; |
Line 211 sub process_xml {
|
Line 213 sub process_xml {
|
$output .= $newcourse.':'; |
$output .= $newcourse.':'; |
} |
} |
$output =~ s/:$//; |
$output =~ s/:$//; |
delete($env{'user.name'}); |
&unset_dc_env(); |
delete($env{'user.domain'}); |
|
delete($env{'request.role.domain'}); |
|
return $output; |
return $output; |
} |
} |
|
|
sub check_activedc { |
sub check_activedc { |
my ($dcdom,$dcname,$defdom) = @_; |
my ($dcdom,$dcname,$defdom) = @_; |
my %dumphash= |
my %roleshash = |
&Apache::lonnet::dump('roles',$dcdom,$dcname); |
&Apache::lonnet::get_my_roles($dcname,$dcdom,'userroles',undef,['dc'],[$defdom]); |
my $now=time; |
if (keys(%roleshash) > 0) { |
my $activedc = 0; |
return 1; |
foreach my $item (keys %dumphash) { |
|
my ($domain,$role) = ($item =~ m-^/([^/]+)/[^_]*_(\w+)$-); |
|
if ($role eq 'dc' && $domain eq $defdom) { |
|
my ($trole,$tend,$tstart)=split(/_/,$dumphash{$item}); |
|
if (($tend) && ($tend<$now)) { next; } |
|
if (($tstart) && ($now<$tstart)) { next; } |
|
$activedc = 1; |
|
last; |
|
} |
|
} |
} |
return $activedc; |
return 0; |
} |
} |
|
|
sub set_permissions { |
sub set_permissions { |
Line 252 sub unset_permissions {
|
Line 243 sub unset_permissions {
|
delete($env{"allowed.$allowtype"}); |
delete($env{"allowed.$allowtype"}); |
} |
} |
} |
} |
|
|
|
sub set_dc_env { |
|
my ($dcname,$dcdom,$defdom) = @_; |
|
$env{'user.name'} = $dcname; |
|
$env{'user.domain'} = $dcdom; |
|
$env{'user.home'} = &Apache::lonnet::homeserver($dcname,$dcdom); |
|
if ($defdom ne '') { |
|
$env{'request.role.domain'} = $defdom; |
|
} |
|
return; |
|
} |
|
|
|
sub unset_dc_env { |
|
delete($env{'user.name'}); |
|
delete($env{'user.domain'}); |
|
delete($env{'user.home'}); |
|
if ($env{'request.role.domain'}) { |
|
delete($env{'request.role.domain'}); |
|
} |
|
return; |
|
} |