version 1.295.2.25, 2010/01/19 22:42:32
|
version 1.295.2.26, 2010/01/19 23:41:43
|
Line 1027 sub print_user_modification_page {
|
Line 1027 sub print_user_modification_page {
|
<input type="hidden" name="pres_type" value="" /> |
<input type="hidden" name="pres_type" value="" /> |
<input type="hidden" name="pres_marker" value="" /> |
<input type="hidden" name="pres_marker" value="" /> |
ENDFORMINFO |
ENDFORMINFO |
my %inccourses; |
my (%inccourses,$roledom); |
foreach my $key (keys(%env)) { |
if ($context eq 'course') { |
if ($key=~/^user\.priv\.cm\.\/($match_domain)\/($match_username)/) { |
$inccourses{$env{'request.course.id'}}=1; |
$inccourses{$1.'_'.$2}=1; |
$roledom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
} elsif ($context eq 'author') { |
|
$roledom = $env{'request.role.domain'}; |
|
} elsif ($context eq 'domain') { |
|
foreach my $key (keys(%env)) { |
|
$roledom = $env{'request.role.domain'}; |
|
if ($key=~/^user\.priv\.cm\.\/($roledom)\/($match_username)/) { |
|
$inccourses{$1.'_'.$2}=1; |
|
} |
|
} |
|
} else { |
|
foreach my $key (keys(%env)) { |
|
if ($key=~/^user\.priv\.cm\.\/($match_domain)\/($match_username)/) { |
|
$inccourses{$1.'_'.$2}=1; |
|
} |
} |
} |
} |
} |
if ($newuser) { |
if ($newuser) { |
Line 1267 ENDNOTOOLSPRIV
|
Line 1281 ENDNOTOOLSPRIV
|
} |
} |
$r->print('</div><div class="LC_clear_float_footer"></div>'); |
$r->print('</div><div class="LC_clear_float_footer"></div>'); |
if ($env{'form.action'} ne 'singlestudent') { |
if ($env{'form.action'} ne 'singlestudent') { |
&display_existing_roles($r,$ccuname,$ccdomain,\%inccourses); |
&display_existing_roles($r,$ccuname,$ccdomain,\%inccourses,$context, |
|
$roledom,$crstype); |
} |
} |
} ## End of new user/old user logic |
} ## End of new user/old user logic |
|
|
if ($env{'form.action'} eq 'singlestudent') { |
if ($env{'form.action'} eq 'singlestudent') { |
my $btntxt; |
my $btntxt; |
if ($crstype eq 'Community') { |
if ($crstype eq 'Community') { |
Line 1388 sub validation_javascript {
|
Line 1402 sub validation_javascript {
|
} |
} |
|
|
sub display_existing_roles { |
sub display_existing_roles { |
my ($r,$ccuname,$ccdomain,$inccourses) = @_; |
my ($r,$ccuname,$ccdomain,$inccourses,$context,$roledom,$crstype) = @_; |
my %rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname); |
my $now=time; |
# Build up table of user roles to allow revocation and re-enabling of roles. |
my %lt=&Apache::lonlocal::texthash( |
my ($tmp) = keys(%rolesdump); |
|
if ($tmp !~ /^(con_lost|error)/i) { |
|
my $now=time; |
|
my %lt=&Apache::lonlocal::texthash( |
|
'rer' => "Existing Roles", |
'rer' => "Existing Roles", |
'rev' => "Revoke", |
'rev' => "Revoke", |
'del' => "Delete", |
'del' => "Delete", |
Line 1404 sub display_existing_roles {
|
Line 1414 sub display_existing_roles {
|
'sta' => "Start", |
'sta' => "Start", |
'end' => "End", |
'end' => "End", |
); |
); |
my (%roletext,%sortrole,%roleclass,%rolepriv); |
my (%rolesdump,%roletext,%sortrole,%roleclass,%rolepriv); |
foreach my $area (sort { my $a1=join('_',(split('_',$a))[1,0]); |
if ($context eq 'course' || $context eq 'author') { |
my $b1=join('_',(split('_',$b))[1,0]); |
my @roles = &Apache::lonuserutils::roles_by_context($context,1,$crstype); |
return $a1 cmp $b1; |
my %roleshash = |
} keys(%rolesdump)) { |
&Apache::lonnet::get_my_roles($ccuname,$ccdomain,'userroles', |
next if ($area =~ /^rolesdef/); |
['active','previous','future'],\@roles,$roledom,1); |
my $envkey=$area; |
foreach my $key (keys(%roleshash)) { |
my $role = $rolesdump{$area}; |
my ($start,$end) = split(':',$roleshash{$key}); |
my $thisrole=$area; |
next if ($start eq '-1' || $end eq '-1'); |
$area =~ s/\_\w\w$//; |
my ($rnum,$rdom,$role,$sec) = split(':',$key); |
my ($role_code,$role_end_time,$role_start_time) = |
if ($context eq 'course') { |
split(/_/,$role); |
next unless (($rnum eq $env{'course.'.$env{'request.course.id'}.'.num'}) |
|
&& ($rdom eq $env{'course.'.$env{'request.course.id'}.'.domain'})); |
|
} elsif ($context eq 'author') { |
|
next unless (($rnum eq $env{'user.name'}) && ($rdom eq $env{'request.role.domain'})); |
|
} |
|
my ($newkey,$newvalue,$newrole); |
|
$newkey = '/'.$rdom.'/'.$rnum; |
|
if ($sec ne '') { |
|
$newkey .= '/'.$sec; |
|
} |
|
$newvalue = $role; |
|
if ($role =~ /^cr/) { |
|
$newrole = 'cr'; |
|
} else { |
|
$newrole = $role; |
|
} |
|
$newkey .= '_'.$newrole; |
|
if ($start ne '' && $end ne '') { |
|
$newvalue .= '_'.$end.'_'.$start; |
|
} |
|
$rolesdump{$newkey} = $newvalue; |
|
} |
|
} else { |
|
%rolesdump=&Apache::lonnet::dump('roles',$ccdomain,$ccuname); |
|
} |
|
# Build up table of user roles to allow revocation and re-enabling of roles. |
|
my ($tmp) = keys(%rolesdump); |
|
return if ($tmp =~ /^(con_lost|error)/i); |
|
foreach my $area (sort { my $a1=join('_',(split('_',$a))[1,0]); |
|
my $b1=join('_',(split('_',$b))[1,0]); |
|
return $a1 cmp $b1; |
|
} keys(%rolesdump)) { |
|
next if ($area =~ /^rolesdef/); |
|
my $envkey=$area; |
|
my $role = $rolesdump{$area}; |
|
my $thisrole=$area; |
|
$area =~ s/\_\w\w$//; |
|
my ($role_code,$role_end_time,$role_start_time) = |
|
split(/_/,$role); |
# Is this a custom role? Get role owner and title. |
# Is this a custom role? Get role owner and title. |
my ($croleudom,$croleuname,$croletitle)= |
my ($croleudom,$croleuname,$croletitle)= |
($role_code=~m{^cr/($match_domain)/($match_username)/(\w+)$}); |
($role_code=~m{^cr/($match_domain)/($match_username)/(\w+)$}); |
my $allowed=0; |
my $allowed=0; |
my $delallowed=0; |
my $delallowed=0; |
my $sortkey=$role_code; |
my $sortkey=$role_code; |
my $class='Unknown'; |
my $class='Unknown'; |
if ($area =~ m{^/($match_domain)/($match_courseid)} ) { |
if ($area =~ m{^/($match_domain)/($match_courseid)} ) { |
$class='Course'; |
$class='Course'; |
my ($coursedom,$coursedir) = ($1,$2); |
my ($coursedom,$coursedir) = ($1,$2); |
$sortkey.="\0$coursedom"; |
$sortkey.="\0$coursedom"; |
# $1.'_'.$2 is the course id (eg. 103_12345abcef103l3). |
# $1.'_'.$2 is the course id (eg. 103_12345abcef103l3). |
my %coursedata= |
my %coursedata= |
&Apache::lonnet::coursedescription($1.'_'.$2); |
&Apache::lonnet::coursedescription($1.'_'.$2); |
my $carea; |
if ($coursedir =~ /^$match_community$/) { |
if (defined($coursedata{'description'})) { |
$class='Community'; |
$carea=$coursedata{'description'}. |
} |
'<br />'.&mt('Domain').': '.$coursedom.(' 'x8). |
$sortkey.="\0$coursedom"; |
|
my $carea; |
|
if (defined($coursedata{'description'})) { |
|
$carea=$coursedata{'description'}. |
|
'<br />'.&mt('Domain').': '.$coursedom.(' 'x8). |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$coursedir,$coursedom); |
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$coursedir,$coursedom); |
$sortkey.="\0".$coursedata{'description'}; |
$sortkey.="\0".$coursedata{'description'}; |
$class=$coursedata{'type'}; |
$class=$coursedata{'type'}; |
|
} else { |
|
if ($class eq 'Community') { |
|
$carea=&mt('Unavailable community').': '.$area; |
|
$sortkey.="\0".&mt('Unavailable community').': '.$area; |
} else { |
} else { |
$carea=&mt('Unavailable course').': '.$area; |
$carea=&mt('Unavailable course').': '.$area; |
$sortkey.="\0".&mt('Unavailable course').': '.$area; |
$sortkey.="\0".&mt('Unavailable course').': '.$area; |
} |
} |
$sortkey.="\0$coursedir"; |
} |
$inccourses->{$1.'_'.$2}=1; |
$sortkey.="\0$coursedir"; |
if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) || |
$inccourses->{$1.'_'.$2}=1; |
|
if ((&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2)) || |
|
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) { |
|
$allowed=1; |
|
} |
|
unless ($allowed) { |
|
my $isowner = &is_courseowner($cid,$coursedata{'internal.courseowner'}); |
|
if ($isowner) { |
|
if (($role_code eq 'co') && ($class eq 'Community')) { |
|
$allowed = 1; |
|
} elsif (($role_code eq 'cc') && ($class eq 'Course')) { |
|
$allowed = 1; |
|
} |
|
} |
|
} |
|
if ((&Apache::lonnet::allowed('dro',$1)) || |
|
(&Apache::lonnet::allowed('dro',$ccdomain))) { |
|
$delallowed=1; |
|
} |
|
# - custom role. Needs more info, too |
|
if ($croletitle) { |
|
if (&Apache::lonnet::allowed('ccr',$1.'/'.$2)) { |
|
$allowed=1; |
|
$thisrole.='.'.$role_code; |
|
} |
|
} |
|
if ($area=~m{^/($match_domain)/($match_courseid)/(\w+)}) { |
|
$carea.='<br />Section: '.$3; |
|
$sortkey.="\0$3"; |
|
if (!$allowed) { |
|
if ($env{'request.course.sec'} eq $3) { |
|
if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2.'/'.$3)) { |
|
$allowed = 1; |
|
} |
|
} |
|
} |
|
} |
|
$area=$carea; |
|
} else { |
|
$sortkey.="\0".$area; |
|
# Determine if current user is able to revoke privileges |
|
if ($area=~m{^/($match_domain)/}) { |
|
if ((&Apache::lonnet::allowed('c'.$role_code,$1)) || |
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) { |
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) { |
$allowed=1; |
$allowed=1; |
} |
} |
if ((&Apache::lonnet::allowed('dro',$1)) || |
if (((&Apache::lonnet::allowed('dro',$1)) || |
(&Apache::lonnet::allowed('dro',$ccdomain))) { |
(&Apache::lonnet::allowed('dro',$ccdomain))) && |
|
($role_code ne 'dc')) { |
$delallowed=1; |
$delallowed=1; |
} |
} |
# - custom role. Needs more info, too |
|
if ($croletitle) { |
|
if (&Apache::lonnet::allowed('ccr',$1.'/'.$2)) { |
|
$allowed=1; |
|
$thisrole.='.'.$role_code; |
|
} |
|
} |
|
# Compute the background color based on $area |
|
if ($area=~m{^/($match_domain)/($match_courseid)/(\w+)}) { |
|
$carea.='<br />Section: '.$3; |
|
$sortkey.="\0$3"; |
|
if (!$allowed) { |
|
if ($env{'request.course.sec'} eq $3) { |
|
if (&Apache::lonnet::allowed('c'.$role_code,$1.'/'.$2.'/'.$3)) { |
|
$allowed = 1; |
|
} |
|
} |
|
} |
|
} |
|
$area=$carea; |
|
} else { |
} else { |
$sortkey.="\0".$area; |
if (&Apache::lonnet::allowed('c'.$role_code,'/')) { |
# Determine if current user is able to revoke privileges |
|
if ($area=~m{^/($match_domain)/}) { |
|
if ((&Apache::lonnet::allowed('c'.$role_code,$1)) || |
|
(&Apache::lonnet::allowed('c'.$role_code,$ccdomain))) { |
|
$allowed=1; |
|
} |
|
if (((&Apache::lonnet::allowed('dro',$1)) || |
|
(&Apache::lonnet::allowed('dro',$ccdomain))) && |
|
($role_code ne 'dc')) { |
|
$delallowed=1; |
|
} |
|
} else { |
|
if (&Apache::lonnet::allowed('c'.$role_code,'/')) { |
|
$allowed=1; |
|
} |
|
} |
|
if ($role_code eq 'ca' || $role_code eq 'au') { |
|
$class='Construction Space'; |
|
} elsif ($role_code eq 'su') { |
|
$class='System'; |
|
} else { |
|
$class='Domain'; |
|
} |
|
} |
|
if (($role_code eq 'ca') || ($role_code eq 'aa')) { |
|
$area=~m{/($match_domain)/($match_username)}; |
|
if (&Apache::lonuserutils::authorpriv($2,$1)) { |
|
$allowed=1; |
$allowed=1; |
} else { |
|
$allowed=0; |
|
} |
} |
} |
} |
my $row = ''; |
if ($role_code eq 'ca' || $role_code eq 'au') { |
$row.= '<td>'; |
$class='Construction Space'; |
my $active=1; |
} elsif ($role_code eq 'su') { |
$active=0 if (($role_end_time) && ($now>$role_end_time)); |
$class='System'; |
if (($active) && ($allowed)) { |
|
$row.= '<input type="checkbox" name="rev:'.$thisrole.'" />'; |
|
} else { |
} else { |
if ($active) { |
$class='Domain'; |
$row.=' '; |
|
} else { |
|
$row.=&mt('expired or revoked'); |
|
} |
|
} |
} |
$row.='</td><td>'; |
} |
if ($allowed && !$active) { |
if (($role_code eq 'ca') || ($role_code eq 'aa')) { |
$row.= '<input type="checkbox" name="ren:'.$thisrole.'" />'; |
$area=~m{/($match_domain)/($match_username)}; |
|
if (&Apache::lonuserutils::authorpriv($2,$1)) { |
|
$allowed=1; |
} else { |
} else { |
$row.=' '; |
$allowed=0; |
} |
} |
$row.='</td><td>'; |
} |
if ($delallowed) { |
my $row = ''; |
$row.= '<input type="checkbox" name="del:'.$thisrole.'" />'; |
$row.= '<td>'; |
|
my $active=1; |
|
$active=0 if (($role_end_time) && ($now>$role_end_time)); |
|
if (($active) && ($allowed)) { |
|
$row.= '<input type="checkbox" name="rev:'.$thisrole.'" />'; |
|
} else { |
|
if ($active) { |
|
$row.=' '; |
} else { |
} else { |
$row.=' '; |
$row.=&mt('expired or revoked'); |
} |
} |
my $plaintext=''; |
} |
if (!$croletitle) { |
$row.='</td><td>'; |
$plaintext=&Apache::lonnet::plaintext($role_code,$class) |
if ($allowed && !$active) { |
} else { |
$row.= '<input type="checkbox" name="ren:'.$thisrole.'" />'; |
$plaintext= |
} else { |
|
$row.=' '; |
|
} |
|
$row.='</td><td>'; |
|
if ($delallowed) { |
|
$row.= '<input type="checkbox" name="del:'.$thisrole.'" />'; |
|
} else { |
|
$row.=' '; |
|
} |
|
my $plaintext=''; |
|
if (!$croletitle) { |
|
$plaintext=&Apache::lonnet::plaintext($role_code,$class) |
|
} else { |
|
$plaintext= |
"Customrole '$croletitle'<br />defined by $croleuname\@$croleudom"; |
"Customrole '$croletitle'<br />defined by $croleuname\@$croleudom"; |
} |
} |
$row.= '</td><td>'.$plaintext. |
$row.= '</td><td>'.$plaintext. |
'</td><td>'.$area. |
'</td><td>'.$area. |
'</td><td>'.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time) |
'</td><td>'.($role_start_time?&Apache::lonlocal::locallocaltime($role_start_time) |
: ' ' ). |
: ' ' ). |
'</td><td>'.($role_end_time ?&Apache::lonlocal::locallocaltime($role_end_time) |
'</td><td>'.($role_end_time ?&Apache::lonlocal::locallocaltime($role_end_time) |
: ' ' ) |
: ' ' ) |
."</td>"; |
."</td>"; |
$sortrole{$sortkey}=$envkey; |
$sortrole{$sortkey}=$envkey; |
$roletext{$envkey}=$row; |
$roletext{$envkey}=$row; |
$roleclass{$envkey}=$class; |
$roleclass{$envkey}=$class; |
$rolepriv{$envkey}=$allowed; |
$rolepriv{$envkey}=$allowed; |
#$r->print($row); |
} # end of foreach (table building loop) |
} # end of foreach (table building loop) |
my $rolesdisplay = 0; |
my $rolesdisplay = 0; |
my %output = (); |
my %output = (); |
foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { |
foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { |
$output{$type} = ''; |
$output{$type} = ''; |
foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) { |
foreach my $which (sort {uc($a) cmp uc($b)} (keys(%sortrole))) { |
if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) { |
if ( ($roleclass{$sortrole{$which}} =~ /^\Q$type\E/ ) && ($rolepriv{$sortrole{$which}}) ) { |
$output{$type}.= |
$output{$type}.= |
&Apache::loncommon::start_data_table_row(). |
&Apache::loncommon::start_data_table_row(). |
$roletext{$sortrole{$which}}. |
$roletext{$sortrole{$which}}. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
} |
} |
} |
} |
unless($output{$type} eq '') { |
unless($output{$type} eq '') { |
$output{$type} = '<tr class="LC_info_row">'. |
$output{$type} = '<tr class="LC_info_row">'. |
"<td align='center' colspan='7'>".&mt($type)."</td></tr>". |
"<td align='center' colspan='7'>".&mt($type)."</td></tr>". |
$output{$type}; |
$output{$type}; |
$rolesdisplay = 1; |
$rolesdisplay = 1; |
} |
} |
} |
} |
if ($rolesdisplay == 1) { |
if ($rolesdisplay == 1) { |
my $contextrole=''; |
my $contextrole=''; |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if (&Apache::loncommon::course_type() eq 'Community') { |
my $crstype = &Apache::loncommon::course_type(); |
$contextrole = &mt('Existing Roles in this Community'); |
$contextrole = "Existing Roles in this $crstype"; |
|
} elsif ($env{'request.role'} =~ /^au\./) { |
|
$contextrole = 'Existing Co-Author Roles in your Construction Space'; |
|
} else { |
} else { |
$contextrole = 'Existing Roles in this Domain'; |
$contextrole = &mt('Existing Roles in this Course'); |
} |
} |
$r->print(' |
} elsif ($env{'request.role'} =~ /^au\./) { |
|
$contextrole = 'Existing Co-Author Roles in your Construction Space'; |
|
} else { |
|
$contextrole = 'Existing Roles in this Domain'; |
|
} |
|
$r->print(' |
<h3>'.$lt{'rer'}.'</h3>'. |
<h3>'.$lt{'rer'}.'</h3>'. |
'<div>'.&mt($contextrole).'</div>'. |
'<div>'.&mt($contextrole).'</div>'. |
&Apache::loncommon::start_data_table("LC_createuser"). |
&Apache::loncommon::start_data_table("LC_createuser"). |
Line 1588 sub display_existing_roles {
|
Line 1656 sub display_existing_roles {
|
'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}. |
'</th><th>'.$lt{'rol'}.'</th><th>'.$lt{'ext'}. |
'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. |
'</th><th>'.$lt{'sta'}.'</th><th>'.$lt{'end'}.'</th>'. |
&Apache::loncommon::end_data_table_header_row()); |
&Apache::loncommon::end_data_table_header_row()); |
foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { |
foreach my $type ('Construction Space','Course','Community','Domain','System','Unknown') { |
if ($output{$type}) { |
if ($output{$type}) { |
$r->print($output{$type}."\n"); |
$r->print($output{$type}."\n"); |
} |
|
} |
} |
$r->print(&Apache::loncommon::end_data_table()); |
|
} |
} |
} # End of check for keys in rolesdump |
$r->print(&Apache::loncommon::end_data_table()); |
|
} |
return; |
return; |
} |
} |
|
|
Line 5823 sub course_level_table {
|
Line 5890 sub course_level_table {
|
'end' => "End" |
'end' => "End" |
); |
); |
|
|
foreach my $protectedcourse (sort( keys(%inccourses))) { |
foreach my $protectedcourse (sort(keys(%inccourses))) { |
my $thiscourse=$protectedcourse; |
my $thiscourse=$protectedcourse; |
$thiscourse=~s:_:/:g; |
$thiscourse=~s:_:/:g; |
my %coursedata=&Apache::lonnet::coursedescription($thiscourse); |
my %coursedata=&Apache::lonnet::coursedescription($thiscourse); |
|
my $isowner = &is_courseowner($protectedcourse,$coursedata{'internal.courseowner'}); |
my $area=$coursedata{'description'}; |
my $area=$coursedata{'description'}; |
my $crstype=$coursedata{'type'}; |
my $crstype=$coursedata{'type'}; |
if (!defined($area)) { $area=&mt('Unavailable course').': '.$protectedcourse; } |
if (!defined($area)) { $area=&mt('Unavailable course').': '.$protectedcourse; } |
Line 5841 sub course_level_table {
|
Line 5909 sub course_level_table {
|
my @roles = &Apache::lonuserutils::roles_by_context('course','',$crstype); |
my @roles = &Apache::lonuserutils::roles_by_context('course','',$crstype); |
foreach my $role (@roles) { |
foreach my $role (@roles) { |
my $plrole=&Apache::lonnet::plaintext($role,$crstype); |
my $plrole=&Apache::lonnet::plaintext($role,$crstype); |
if (&Apache::lonnet::allowed('c'.$role,$thiscourse)) { |
if ((&Apache::lonnet::allowed('c'.$role,$thiscourse)) || |
|
((($role eq 'cc') || ($role eq 'co')) && ($isowner))) { |
$table .= &course_level_row($protectedcourse,$role,$area,$domain, |
$table .= &course_level_row($protectedcourse,$role,$area,$domain, |
$plrole,\%sections_count,\%lt); |
$plrole,\%sections_count,\%lt); |
} elsif ($env{'request.course.sec'} ne '') { |
} elsif ($env{'request.course.sec'} ne '') { |
if (&Apache::lonnet::allowed('c'.$role,$thiscourse.'/'. |
if (&Apache::lonnet::allowed('c'.$role,$thiscourse.'/'. |
$env{'request.course.sec'})) { |
$env{'request.course.sec'})) { |
Line 6347 sub get_selfenroll_titles {
|
Line 6416 sub get_selfenroll_titles {
|
return (\@row,\%lt); |
return (\@row,\%lt); |
} |
} |
|
|
|
sub is_courseowner { |
|
my ($thiscourse,$courseowner) = @_; |
|
if ($courseowner eq '') { |
|
if ($env{'request.course.id'} eq $thiscourse) { |
|
$courseowner = $env{'course.'.$env{'request.course.id'}.'.internal.courseowner'}; |
|
} |
|
} |
|
if ($courseowner ne '') { |
|
if ($courseowner eq $env{'user.name'}.':'.$env{'user.domain'}) { |
|
return 1; |
|
} |
|
} |
|
return; |
|
} |
|
|
#---------------------------------------------- end functions for &phase_two |
#---------------------------------------------- end functions for &phase_two |
|
|
#--------------------------------- functions for &phase_two and &phase_three |
#--------------------------------- functions for &phase_two and &phase_three |