version 1.31, 2009/09/05 20:20:17
|
version 1.35.4.1, 2010/02/26 23:50:28
|
Line 159 use strict;
|
Line 159 use strict;
|
# firstres can be nav, syl, or blank for "Navigate Contents", Syllabus, or |
# firstres can be nav, syl, or blank for "Navigate Contents", Syllabus, or |
# no entry respectively. |
# no entry respectively. |
# |
# |
# crstype can be Course or Group |
# crstype can be Course or Community |
# |
# |
# crsquota is the total disk space permitted for course group portfolio files |
# crsquota is the total disk space permitted for course group portfolio files |
# in all course groups. |
# in all course groups. |
Line 197 sub create_courses {
|
Line 197 sub create_courses {
|
open(FILE,"<$$perlvarref{'lonTabDir'}.'/rolesplain.tab"); |
open(FILE,"<$$perlvarref{'lonTabDir'}.'/rolesplain.tab"); |
my @rolesplain = <FILE>; |
my @rolesplain = <FILE>; |
close(FILE); |
close(FILE); |
foreach (@rolesplain) { |
foreach my $item (@rolesplain) { |
if ($_ =~ /^(st|ta|ex|ad|in|cc):([\w\s]+)$/) { |
if ($item =~ /^(st|ta|ep|ad|in|cc|co):([\w\s]+):?([\w\s]*)/) { |
$longroles{$1} = $2; |
$longroles{'Course'}{$1} = $2; |
|
$longroles{'Community'}{$1} = $3; |
} |
} |
} |
} |
my ($logmsg,$keysmsg,$newusermsg,$addresult); |
my ($logmsg,$keysmsg,$newusermsg,$addresult); |
Line 253 sub parse_coursereqs {
|
Line 254 sub parse_coursereqs {
|
my $userkey = ''; |
my $userkey = ''; |
my $role = ''; |
my $role = ''; |
my @items = ('title','optional_id','coursecode','coursehome','reshome','nonstandard','adds','drops','topmap','firstres','clonecrs','clonedom','datemode','dateshift','showphotos','setpolicy','setcontent','setkeys','keyauth','disresdis','disablechat','openall','notify_owner','notify_dc','crstype','crsquota'); |
my @items = ('title','optional_id','coursecode','coursehome','reshome','nonstandard','adds','drops','topmap','firstres','clonecrs','clonedom','datemode','dateshift','showphotos','setpolicy','setcontent','setkeys','keyauth','disresdis','disablechat','openall','notify_owner','notify_dc','crstype','crsquota'); |
|
my @possroles = qw(st ad ep ta in cc co); |
my @dateitems = ('enrollstart','enrollend','accessstart','accessend'); |
my @dateitems = ('enrollstart','enrollend','accessstart','accessend'); |
my @useritems = ('autharg','authtype','firstname','generation','lastname','middlename','studentID'); |
my @useritems = ('autharg','authtype','firstname','generation','lastname','middlename','studentID'); |
my $p = HTML::Parser->new |
my $p = HTML::Parser->new |
Line 272 sub parse_coursereqs {
|
Line 274 sub parse_coursereqs {
|
} |
} |
if ("@state" eq "class users user roles role") { |
if ("@state" eq "class users user roles role") { |
$role = $attr->{id}; |
$role = $attr->{id}; |
if ($role =~ /^(st|ad|ep|ta|in|cc)$/) { |
if (grep(/^\Q$role\E$/,@possroles)) { |
push(@{$$details{$num}{'users'}{$userkey}{'roles'}}, $role); |
push(@{$$details{$num}{'users'}{$userkey}{'roles'}}, $role); |
%{$$details{$num}{'users'}{$userkey}{$role}} = (); |
%{$$details{$num}{'users'}{$userkey}{$role}} = (); |
@{$$details{$num}{'users'}{$userkey}{$role}{'usec'}} = (); |
@{$$details{$num}{'users'}{$userkey}{$role}{'usec'}} = (); |
Line 318 sub parse_coursereqs {
|
Line 320 sub parse_coursereqs {
|
@{$$details{$num}{'users'}{$userkey}{'roles'}} = (); |
@{$$details{$num}{'users'}{$userkey}{'roles'}} = (); |
} elsif ("@state" eq "class users user email") { |
} elsif ("@state" eq "class users user email") { |
$$details{$num}{'users'}{$userkey}{'emailaddr'} = $text; |
$$details{$num}{'users'}{$userkey}{'emailaddr'} = $text; |
$$details{$num}{'users'}{$userkey}{'emailenc'} = &Apache::lonnet::escape($text); |
$$details{$num}{'users'}{$userkey}{'emailenc'} = &LONCAPA::escape($text); |
} elsif ("@state" eq "class users user roles role start") { |
} elsif ("@state" eq "class users user roles role start") { |
if ($role =~ /^(st|ad|ep|ta|in|cc)$/) { |
if (grep(/^\Q$role\E$/,@possroles)) { |
$$details{$num}{'users'}{$userkey}{$role}{'start'} = &process_date($text); |
$$details{$num}{'users'}{$userkey}{$role}{'start'} = &process_date($text); |
} |
} |
} elsif ("@state" eq "class users user roles role end") { |
} elsif ("@state" eq "class users user roles role end") { |
if ($role =~ /^(st|ad|ep|ta|in|cc)$/) { |
if (grep(/^\Q$role\E$/,@possroles)) { |
$$details{$num}{'users'}{$userkey}{$role}{'end'} = &process_date($text); |
$$details{$num}{'users'}{$userkey}{$role}{'end'} = &process_date($text); |
} |
} |
} elsif ("@state" eq "class users user roles role usec") { |
} elsif ("@state" eq "class users user roles role usec") { |
if ($role =~ /^(st|ad|ep|ta|in|cc)$/) { |
if (grep(/^\Q$role\E$/,@possroles)) { |
unless ($text eq '') { |
unless ($text eq '') { |
push(@{$$details{$num}{'users'}{$userkey}{$role}{'usec'}},$text); |
push(@{$$details{$num}{'users'}{$userkey}{$role}{'usec'}},$text); |
} |
} |
Line 403 sub build_course {
|
Line 405 sub build_course {
|
my $xliststr = ''; |
my $xliststr = ''; |
my $noenddate = ''; |
my $noenddate = ''; |
my $outcome; |
my $outcome; |
my ($courseid,$crsudom,$crsunum); |
my ($courseid,$crsudom,$crsunum,$crstype,$ccrole,$rolenames); |
|
if ($details->{'crstype'} eq 'Community') { |
|
$crstype = $details->{'crstype'}; |
|
$ccrole ='co'; |
|
if (ref($longroles) eq 'HASH') { |
|
$rolenames = $longroles->{'Community'}; |
|
} |
|
} else { |
|
$crstype = 'Course'; |
|
$ccrole = 'cc'; |
|
if (ref($longroles) eq 'HASH') { |
|
$rolenames = $longroles->{'Course'}; |
|
} |
|
} |
my $linefeed; |
my $linefeed; |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$linefeed = "\n"; |
$linefeed = "\n"; |
Line 453 sub build_course {
|
Line 468 sub build_course {
|
'cid' => '', |
'cid' => '', |
'context' => 'createowner', |
'context' => 'createowner', |
'linefeed' => $linefeed, |
'linefeed' => $linefeed, |
'role' => 'cc', |
'role' => $ccrole, |
}; |
}; |
$outcome = &LONCAPA::Enrollment::create_newuser($ownerargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo,$context); |
$outcome = &LONCAPA::Enrollment::create_newuser($ownerargs,$logmsg,$newusermsg,$enrollcount,$addresult,$rolenames,\%courseinfo,$context); |
} else { |
} else { |
$outcome = 'ok'; |
$outcome = 'ok'; |
} |
} |
Line 478 sub build_course {
|
Line 493 sub build_course {
|
crsquota => $details->{'crsquota'}, |
crsquota => $details->{'crsquota'}, |
clonecourse => $details->{'clonecrs'}, |
clonecourse => $details->{'clonecrs'}, |
clonedomain => $details->{'clonedom'}, |
clonedomain => $details->{'clonedom'}, |
|
cloneroster => $details->{'cloneroster'}, |
datemode => $details->{'datemode'}, |
datemode => $details->{'datemode'}, |
dateshift => $details->{'dateshift'}, |
dateshift => $details->{'dateshift'}, |
crsid => $details->{'optional_id'}, |
crsid => $details->{'optional_id'}, |
Line 521 sub build_course {
|
Line 537 sub build_course {
|
} |
} |
|
|
# |
# |
# Make owner a course coordinator |
# Make owner a coordinator |
# |
# |
if (($owner_domain) && ($owner_uname)) { |
if (($owner_domain) && ($owner_uname)) { |
&Apache::lonnet::assignrole($owner_domain,$owner_uname,$courseid,'cc','','','','',$context); |
&Apache::lonnet::assignrole($owner_domain,$owner_uname,$courseid,$ccrole,'','','','',$context); |
} |
} |
|
|
# |
# |
# Process other reqested users |
# Process other reqested users |
# |
# |
my @courseroles = qw(st ep ta in cc); |
|
|
my @courseroles = qw(st ep ta in); |
|
push(@courseroles,$ccrole); |
if (&owner_is_dc($owner_uname,$owner_domain,$crsudom)) { |
if (&owner_is_dc($owner_uname,$owner_domain,$crsudom)) { |
push(@courseroles,'ad'); |
push(@courseroles,'ad'); |
} |
} |
Line 567 sub build_course {
|
Line 585 sub build_course {
|
} |
} |
} |
} |
my $firstsec; |
my $firstsec; |
unless (($firstrole eq 'cc') || ($firstrole eq '')) { |
unless (($firstrole eq $ccrole) || ($firstrole eq '')) { |
$firstsec = $details->{'users'}{$userkey}{$firstrole}{'usec'}[0]; |
$firstsec = $details->{'users'}{$userkey}{$firstrole}{'usec'}[0]; |
} |
} |
my $userargs = { |
my $userargs = { |
Line 595 sub build_course {
|
Line 613 sub build_course {
|
$outcome = &LONCAPA::Enrollment::create_newuser($userargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo,$context); |
$outcome = &LONCAPA::Enrollment::create_newuser($userargs,$logmsg,$newusermsg,$enrollcount,$addresult,$longroles,\%courseinfo,$context); |
# now add other roles and other sections. |
# now add other roles and other sections. |
if ($outcome eq 'ok') { |
if ($outcome eq 'ok') { |
if ((($firstrole ne 'st') && ($firstrole ne 'cc') && ($firstrole ne '')) && (@{$details->{'users'}{$userkey}{$firstrole}{'usec'}} > 1)) { |
if ((($firstrole ne 'st') && ($firstrole ne $ccrole) && ($firstrole ne '')) && (@{$details->{'users'}{$userkey}{$firstrole}{'usec'}} > 1)) { |
for (my $i=1; $i<@{$details->{'users'}{$userkey}{$firstrole}{'usec'}}; $i++) { |
for (my $i=1; $i<@{$details->{'users'}{$userkey}{$firstrole}{'usec'}}; $i++) { |
my $curr_role = $firstrole; |
my $curr_role = $firstrole; |
my $start = $details->{'users'}{$userkey}{$curr_role}{'start'}; |
my $start = $details->{'users'}{$userkey}{$curr_role}{'start'}; |
Line 623 sub build_course {
|
Line 641 sub build_course {
|
$url .= '/'.$usec; |
$url .= '/'.$usec; |
} |
} |
$$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context); |
$$output .= &Apache::loncommon::commit_studentrole(\$stulogmsg,$userdom,$username,$url,$curr_role,$start,$end,$crsudom,$crsunum,$usec,$context); |
} elsif ($curr_role eq 'cc') { |
} elsif ($curr_role eq $ccrole) { |
$url = '/'.$crsudom.'/'.$crsunum; |
$url = '/'.$crsudom.'/'.$crsunum; |
my $usec = ''; |
my $usec = ''; |
$$output .= |
$$output .= |