version 1.212, 2022/11/23 02:55:37
|
version 1.214, 2023/06/20 14:03:52
|
Line 215 sub get_instdoms {
|
Line 215 sub get_instdoms {
|
sub restricted_dom { |
sub restricted_dom { |
my ($context,$key,$udom,$uname,$role,$start,$end,$cdom,$cnum,$csec,$credits, |
my ($context,$key,$udom,$uname,$role,$start,$end,$cdom,$cnum,$csec,$credits, |
$process_by,$instdoms,$got_role_approvals,$got_instdoms,$reject,$pending, |
$process_by,$instdoms,$got_role_approvals,$got_instdoms,$reject,$pending, |
$notifydc) = @_; |
$notifydc,$status,$unauthorized,$currqueued) = @_; |
return if ($udom eq $cdom); |
return if ($udom eq $cdom); |
return unless ((ref($process_by) eq 'HASH') && (ref($instdoms) eq 'HASH') && |
return unless ((ref($process_by) eq 'HASH') && (ref($instdoms) eq 'HASH') && |
(ref($got_role_approvals) eq 'HASH') && (ref($got_instdoms) eq 'HASH') && |
(ref($got_role_approvals) eq 'HASH') && (ref($got_instdoms) eq 'HASH') && |
(ref($reject) eq 'HASH') && (ref($pending) eq 'HASH') && |
(ref($reject) eq 'HASH') && (ref($pending) eq 'HASH') && |
(ref($notifydc) eq 'HASH')); |
(ref($notifydc) eq 'HASH') && (ref($status) eq 'HASH') && |
|
(ref($unauthorized) eq 'HASH') && (ref($currqueued) eq 'HASH')); |
my (%approval,@notify,$gotdata,$skip); |
my (%approval,@notify,$gotdata,$skip); |
if (ref($got_role_approvals->{$context}) eq 'HASH') { |
if (ref($got_role_approvals->{$context}) eq 'HASH') { |
if ($got_role_approvals->{$context}{$udom}) { |
if ($got_role_approvals->{$context}{$udom}) { |
Line 255 sub restricted_dom {
|
Line 256 sub restricted_dom {
|
if (grep(/^\Q$cdom\E$/,@inst)) { |
if (grep(/^\Q$cdom\E$/,@inst)) { |
if (exists($approval{'instdom'})) { |
if (exists($approval{'instdom'})) { |
my $rule = $approval{'instdom'}; |
my $rule = $approval{'instdom'}; |
if ($rule eq 'none') { |
if (($rule eq 'none') || ($rule eq 'user') || ($rule eq 'domain')) { |
$reject->{$key} = { |
my ($id,$currstatus,$curradj) = &get_othdomreq_status($key,$uname,$udom,$role,$cdom,$cnum,$csec); |
cdom => $cdom, |
if (($currstatus ne '') && ($curradj eq $rule)) { |
cnum => $cnum, |
$status->{$key}->{$uname.':'.$udom} = $currstatus; |
csec => $csec, |
} |
udom => $udom, |
if ($rule eq 'none') { |
uname => $uname, |
$reject->{$key}->{$uname.':'.$udom} = { |
role => $role, |
cdom => $cdom, |
}; |
cnum => $cnum, |
$skip = 1; |
csec => $csec, |
} elsif (($rule eq 'user') || ($rule eq 'domain')) { |
udom => $udom, |
$pending->{$key} = { |
uname => $uname, |
cdom => $cdom, |
role => $role, |
cnum => $cnum, |
}; |
csec => $csec, |
$skip = 1; |
udom => $udom, |
} elsif (($rule eq 'user') || ($rule eq 'domain')) { |
uname => $uname, |
if ($curradj eq $rule) { |
role => $role, |
unless ($currstatus eq 'approved') { |
start => $start, |
if ($currstatus eq 'rejected') { |
end => $end, |
$unauthorized->{$key}->{$uname.':'.$udom} = { |
adj => $rule, |
cdom => $cdom, |
}; |
cnum => $cnum, |
if (($role eq 'st') && ($credits ne '')) { |
csec => $csec, |
$pending->{$key}->{'credits'} = $credits; |
udom => $udom, |
|
uname => $uname, |
|
role => $role, |
|
}; |
|
} elsif ($currstatus eq 'pending') { |
|
$currqueued->{$key}->{$uname.':'.$udom} = { |
|
cdom => $cdom, |
|
cnum => $cnum, |
|
csec => $csec, |
|
udom => $udom, |
|
uname => $uname, |
|
role => $role, |
|
adj => $rule, |
|
}; |
|
} |
|
$skip = 1; |
|
} |
|
} else { |
|
$pending->{$key}->{$uname.':'.$udom} = { |
|
cdom => $cdom, |
|
cnum => $cnum, |
|
csec => $csec, |
|
udom => $udom, |
|
uname => $uname, |
|
role => $role, |
|
start => $start, |
|
end => $end, |
|
adj => $rule, |
|
}; |
|
if (($role eq 'st') && ($credits ne '')) { |
|
$pending->{$key}->{$uname.':'.$udom}->{'credits'} = $credits; |
|
} |
|
$skip = 1; |
|
} |
} |
} |
$skip = 1; |
|
} |
} |
} |
} |
} elsif (exists($approval{'extdom'})) { |
} elsif (exists($approval{'extdom'})) { |
my $rule = $approval{'extdom'}; |
my $rule = $approval{'extdom'}; |
if ($rule eq 'none') { |
if (($rule eq 'none') || ($rule eq 'user') || ($rule eq 'domain')) { |
$reject->{$key} = { |
my ($id,$currstatus,$curradj) = &get_othdomreq_status($key,$uname,$udom,$role,$cdom,$cnum,$csec); |
cdom => $cdom, |
if (($currstatus ne '') && ($curradj eq $rule)) { |
cnum => $cnum, |
$status->{$key}->{$uname.':'.$udom} = $currstatus; |
csec => $csec, |
} |
udom => $udom, |
if ($rule eq 'none') { |
uname => $uname, |
$reject->{$key}->{$uname.':'.$udom} = { |
role => $role, |
cdom => $cdom, |
}; |
cnum => $cnum, |
$skip = 1; |
csec => $csec, |
} elsif (($rule eq 'user') || ($rule eq 'domain')) { |
udom => $udom, |
$pending->{$key} = { |
uname => $uname, |
cdom => $cdom, |
role => $role, |
cnum => $cnum, |
}; |
csec => $csec, |
$skip = 1; |
udom => $udom, |
} elsif (($rule eq 'user') || ($rule eq 'domain')) { |
uname => $uname, |
if ($curradj eq $rule) { |
role => $role, |
unless ($currstatus eq 'approved') { |
start => $start, |
if ($currstatus eq 'rejected') { |
end => $end, |
$unauthorized->{$key}->{$uname.':'.$udom} = { |
adj => $rule, |
cdom => $cdom, |
}; |
cnum => $cnum, |
if (($role eq 'st') && ($credits ne '')) { |
csec => $csec, |
$pending->{$key}->{'credits'} = $credits; |
udom => $udom, |
|
uname => $uname, |
|
role => $role, |
|
}; |
|
} elsif ($currstatus eq 'pending') { |
|
$currqueued->{$key}->{$uname.':'.$udom} = { |
|
cdom => $cdom, |
|
cnum => $cnum, |
|
csec => $csec, |
|
udom => $udom, |
|
uname => $uname, |
|
role => $role, |
|
adj => $rule, |
|
}; |
|
} |
|
$skip = 1; |
|
} |
|
} else { |
|
$pending->{$key}->{$uname.':'.$udom} = { |
|
cdom => $cdom, |
|
cnum => $cnum, |
|
csec => $csec, |
|
udom => $udom, |
|
uname => $uname, |
|
role => $role, |
|
start => $start, |
|
end => $end, |
|
adj => $rule, |
|
}; |
|
if (($role eq 'st') && ($credits ne '')) { |
|
$pending->{$key}->{$uname.':'.$udom}->{'credits'} = $credits; |
|
} |
|
$skip = 1; |
|
} |
} |
} |
$skip = 1; |
|
} |
} |
} |
} |
} |
} |
Line 318 sub restricted_dom {
|
Line 383 sub restricted_dom {
|
return $skip; |
return $skip; |
} |
} |
|
|
|
sub get_othdomreq_status { |
|
my ($key,$uname,$udom,$role,$cdom,$cnum,$csec) = @_; |
|
my $id = $uname.':'.$udom.':'.$role; |
|
my ($dbnum,$currstatus,$curradj); |
|
if (($role eq 'ca') || ($role eq 'aa')) { |
|
$dbnum = $cnum; |
|
} elsif ($key eq $cdom.'_'.$role) { |
|
$dbnum = &Apache::lonnet::get_domainconfiguser($cdom); |
|
} else { |
|
$id .= ':'.$csec; |
|
$dbnum = $cnum; |
|
} |
|
my $statusid = 'status&'.$id; |
|
my %curr = &Apache::lonnet::get('nohist_othdomqueued',[$id,$statusid],$cdom,$dbnum); |
|
if (ref($curr{$id}) eq 'HASH') { |
|
$curradj = $curr{$id}{'adj'}; |
|
} |
|
$currstatus = $curr{$statusid}; |
|
return ($id,$currstatus,$curradj); |
|
} |
|
|
sub print_roles_rejected { |
sub print_roles_rejected { |
my ($context,$reject) = @_; |
my ($context,$reject,$unauthorized) = @_; |
return unless (ref($reject) eq 'HASH'); |
return unless ((ref($reject) eq 'HASH') || (ref($unauthorized) eq 'HASH')); |
my $output; |
my $output; |
if (keys(%{$reject}) > 0) { |
if (keys(%{$reject}) > 0) { |
$output = '<p class="LC_warning">'. |
$output = '<p class="LC_warning">'. |
&mt("The following roles could not be assigned because the user is from another domain, and that domain's policies disallow it").'<ul>'; |
&mt("The following roles could not be assigned because the user is from another domain, and that domain's policies disallow it").'<ul>'; |
foreach my $key (sort(keys(%{$reject}))) { |
foreach my $key (sort(keys(%{$reject}))) { |
if (ref($reject->{$key}) eq 'HASH') { |
if (ref($reject->{$key}) eq 'HASH') { |
my ($crstype,$role,$cdom,$cnum,$title); |
foreach my $user (sort(keys(%{$reject->{$key}}))) { |
$role = $reject->{$key}{'role'}; |
if (ref($reject->{$key}->{$user}) eq 'HASH') { |
$cdom = $reject->{$key}{'cdom'}; |
my ($crstype,$role,$cdom,$cnum,$csec,$title,$plainrole); |
$cnum = $reject->{$key}{'cnum'}; |
$role = $reject->{$key}->{$user}{'role'}; |
if ($context eq 'domain') { |
$cdom = $reject->{$key}->{$user}{'cdom'}; |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
$cnum = $reject->{$key}->{$user}{'cnum'}; |
my %coursedata = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
$csec = $reject->{$key}->{$user}{'csec'}; |
$crstype = $coursedata{'type'}; |
if (($context eq 'domain') && ($cnum ne '')) { |
$title = $coursedata{'description'}; |
if (($role eq 'ca') || ($role eq 'aa')) { |
} elsif (($role eq 'ca') || ($role eq 'aa')) { |
$title = &Apache::loncommon::plainname($cnum,$cdom); |
$title = &Apache::loncommon::plainname($cnum,$cdom); |
} else { |
} |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
} elsif ($context eq 'course') { |
my %coursedata = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
$crstype = &Apache::loncommon::course_type(); |
$crstype = $coursedata{'type'}; |
} |
$title = $coursedata{'description'}; |
my $plainrole = &Apache::lonnet::plaintext($reject->{$key}{'role'},$crstype); |
} |
$output .= '<li>'.&mt('User: [_1]',$reject->{$key}{'uname'}).' | '. |
} |
&mt('Domain: [_1]',$reject->{$key}{'udom'}).' | '. |
} elsif ($context eq 'course') { |
&mt('Role: [_1]',$plainrole); |
$crstype = &Apache::loncommon::course_type(); |
if ($crstype) { |
} |
$output .= ' | '.&mt('Section: [_1]',$reject->{$key}{'csec'}); |
my $plainrole = &Apache::lonnet::plaintext($role,$crstype); |
} elsif (($context eq 'domain') && (($role eq 'ca') || ($role eq 'aa'))) { |
$output .= '<li>'.&mt('User: [_1]',$reject->{$key}->{$user}{'uname'}).' | '. |
$output .= ' | '.&mt('Authoring Space belonging to: [_1]',$title); |
&mt('Domain: [_1]',$reject->{$key}->{$user}{'udom'}).' | '. |
} |
&mt('Role: [_1]',$plainrole); |
if (($context eq 'domain') && ($crstype)) { |
if ($crstype) { |
$output .= ' | '.&mt("$crstype: [_1]",$title); |
if ($csec ne'') { |
|
$output .= ' | '.&mt('Section: [_1]',$csec); |
|
} |
|
} elsif (($context eq 'domain') && (($role eq 'ca') || ($role eq 'aa'))) { |
|
$output .= ' | '.&mt('Authoring Space belonging to: [_1]',$title); |
|
|
|
} |
|
if (($context eq 'domain') && ($crstype)) { |
|
$output .= ' | '.&mt("$crstype: [_1]",$title); |
|
} |
|
$output .= '</li>'; |
|
} |
} |
} |
$output .= '</li>'; |
|
} |
} |
} |
} |
$output .= '</ul></p>'; |
$output .= '</ul></p>'; |
} |
} |
|
if (keys(%{$unauthorized}) > 0) { |
|
$output = '<p class="LC_warning">'. |
|
&mt("The following roles could not be assigned because the user is from another domain, and that domain's policies require approval by the user themselves or by a domain coordinator in that domain, and approval has been withheld.").'<ul>'; |
|
foreach my $key (sort(keys(%{$unauthorized}))) { |
|
if (ref($unauthorized->{$key}) eq 'HASH') { |
|
foreach my $user (sort(keys(%{$unauthorized->{$key}}))) { |
|
if (ref($unauthorized->{$key}->{$user}) eq 'HASH') { |
|
my ($crstype,$role,$cdom,$cnum,$csec,$title,$plainrole); |
|
$role = $unauthorized->{$key}->{$user}{'role'}; |
|
$cdom = $unauthorized->{$key}->{$user}{'cdom'}; |
|
$cnum = $unauthorized->{$key}->{$user}{'cnum'}; |
|
$csec = $unauthorized->{$key}->{$user}{'csec'}; |
|
if (($context eq 'domain') && ($cnum ne '')) { |
|
if (($role eq 'ca') || ($role eq 'aa')) { |
|
$title = &mt('Authoring Space belonging to: [_1]', |
|
&Apache::loncommon::plainname($cnum,$cdom)); |
|
} else { |
|
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
|
my %coursedata = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
|
$crstype = $coursedata{'type'}; |
|
$title = &mt("$crstype: [_1]",$coursedata{'description'}); |
|
} |
|
} |
|
} elsif ($context eq 'course') { |
|
$crstype = &Apache::loncommon::course_type(); |
|
} |
|
$plainrole = &Apache::lonnet::plaintext($role,$crstype); |
|
$output .= '<li>'.&mt('User: [_1]',$unauthorized->{$key}->{$user}{'uname'}).' | '. |
|
&mt('Domain: [_1]',$unauthorized->{$key}->{$user}{'udom'}).' | '. |
|
&mt('Role: [_1]',$plainrole); |
|
if ($crstype) { |
|
if ($csec ne'') { |
|
$output .= ' | '.&mt('Section: [_1]',$csec); |
|
} |
|
} |
|
if ($title ne '') { |
|
$output .= ' | '.$title; |
|
} |
|
$output .= '</li>'; |
|
} |
|
} |
|
} |
|
} |
|
$output .= '</ul></p>'; |
|
} |
return $output; |
return $output; |
} |
} |
|
|
sub print_roles_queued { |
sub print_roles_queued { |
my ($context,$pending,$notifydc) = @_; |
my ($context,$pending,$notifydc,$currqueued) = @_; |
return unless ((ref($pending) eq 'HASH') && (ref($notifydc) eq 'HASH')); |
return unless ((ref($pending) eq 'HASH') && (ref($notifydc) eq 'HASH') && |
|
(ref($currqueued) eq 'HASH')); |
my $output; |
my $output; |
if (keys(%{$pending}) > 0) { |
if (keys(%{$pending}) > 0) { |
my $now = time; |
my $now = time; |
Line 374 sub print_roles_queued {
|
Line 516 sub print_roles_queued {
|
my $requester = $env{'user.name'}.':'.$env{'user.domain'}; |
my $requester = $env{'user.name'}.':'.$env{'user.domain'}; |
foreach my $key (sort(keys(%{$pending}))) { |
foreach my $key (sort(keys(%{$pending}))) { |
if (ref($pending->{$key}) eq 'HASH') { |
if (ref($pending->{$key}) eq 'HASH') { |
my $role = $pending->{$key}{'role'}; |
foreach my $user (sort(keys(%{$pending->{$key}}))) { |
my $uname = $pending->{$key}{'uname'}; |
if (ref($pending->{$key}->{$user}) eq 'HASH') { |
my $udom = $pending->{$key}{'udom'}; |
my $role = $pending->{$key}->{$user}{'role'}; |
my $csec = $pending->{$key}{'csec'}; |
my $uname = $pending->{$key}->{$user}{'uname'}; |
my $cdom = $pending->{$key}{'cdom'}; |
my $udom = $pending->{$key}->{$user}{'udom'}; |
my $cnum = $pending->{$key}{'cnum'}; |
my $csec = $pending->{$key}->{$user}{'csec'}; |
my $adj = $pending->{$key}{'adj'}; |
my $cdom = $pending->{$key}->{$user}{'cdom'}; |
my $start = $pending->{$key}{'start'}; |
my $cnum = $pending->{$key}->{$user}{'cnum'}; |
my $end = $pending->{$key}{'end'}; |
my $adj = $pending->{$key}->{$user}{'adj'}; |
my $credits = $pending->{$key}{'credits'}; |
my $start = $pending->{$key}->{$user}{'start'}; |
my $now = time; |
my $end = $pending->{$key}->{$user}{'end'}; |
my ($crstype,$title); |
my $credits = $pending->{$key}->{$user}{'credits'}; |
if ($context eq 'course') { |
my $now = time; |
$crstype = &Apache::loncommon::course_type(); |
my ($crstype,$title,$plainrole,$extent,$id,$status); |
} elsif ($context eq 'domain') { |
if ($context eq 'course') { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
$crstype = &Apache::loncommon::course_type(); |
my %coursedata = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
$title = $env{'course.'.$env{'request.course.id'}.'.description'}; |
$crstype = $coursedata{'type'}; |
} elsif ($context eq 'domain') { |
$title = $coursedata{'description'}; |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
} elsif (($role eq 'ca') || ($role eq 'aa')) { |
my %coursedata = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
$title = &Apache::loncommon::plainname($cnum,$cdom); |
$crstype = $coursedata{'type'}; |
} |
$title = $coursedata{'description'}; |
} |
} elsif (($role eq 'ca') || ($role eq 'aa')) { |
my $plainrole = &Apache::lonnet::plaintext($role,$crstype); |
$title = &Apache::loncommon::plainname($cnum,$cdom); |
my $extent = "/$cdom/$cnum"; |
} |
$output .= '<li>'.&mt('User: [_1]',$uname).' | '. |
} |
&mt('Domain: [_1]',$udom).' | '. |
$plainrole = &Apache::lonnet::plaintext($role,$crstype); |
&mt('Role: [_1]',$plainrole).' | '; |
$extent = "/$cdom/$cnum"; |
if ($crstype) { |
$id = $uname.':'.$udom.':'.$role; |
if ($csec ne '') { |
if (($context eq 'course') || ($crstype)) { |
$output .= &mt('Section: [_1]',$csec).' | '; |
$id .= ':'.$csec; |
$extent .= "/$csec"; |
} |
} |
$output .= '<li>'.&mt('User: [_1]',$uname).' | '. |
} |
&mt('Domain: [_1]',$udom).' | '. |
if ($adj eq 'user') { |
&mt('Role: [_1]',$plainrole); |
$output .= '<br />'.&mt('Message sent to user for approval'); |
if ($crstype) { |
$touser{$uname.':'.$udom}{$extent.':'.$role} = { |
if ($csec ne'') { |
timestamp => $now, |
$output .= ' | '.&mt('Section: [_1]',$csec); |
requester => $requester, |
} |
start => $start, |
} elsif (($context eq 'domain') && (($role eq 'ca') || ($role eq 'aa'))) { |
end => $end, |
$output .= ' | '.&mt('Authoring Space belonging to: [_1]',$title); |
credits => $credits, |
} |
context => $context, |
if (($context eq 'domain') && ($crstype)) { |
}; |
$output .= ' | '.&mt("$crstype: [_1]",$title); |
} elsif ($adj eq 'domain') { |
} |
$output .= '<br />'.&mt("Message sent to user's domain coordinator for approval"); |
if (($crstype) && ($csec ne '')) { |
$todom{$udom}{$uname.':'.$extent.':'.$role} = { |
$extent .= "/$csec"; |
timestamp => $now, |
} |
requester => $requester, |
if ($adj eq 'user') { |
start => $start, |
$output .= '<br />'.&mt('Message sent to user for approval'); |
end => $end, |
$touser{$uname.':'.$udom}{'pending:'.$extent.':'.$role} = { |
credits => $credits, |
timestamp => $now, |
context => $context, |
requester => $requester, |
}; |
start => $start, |
} |
end => $end, |
$output .= '</li>'; |
credits => $credits, |
my $id = $uname.':'.$udom.':'.$role; |
context => $context, |
if (($context eq 'course') || ($crstype)) { |
}; |
$id .= ':'.$csec; |
} elsif ($adj eq 'domain') { |
$crsqueue{$cdom.'_'.$cnum}{$id} = { |
$output .= '<br />'.&mt("Message sent to user's domain coordinator for approval"); |
timestamp => $now, |
$todom{$udom}{'pending:'.$uname.':'.$extent.':'.$role} = { |
requester => $requester, |
timestamp => $now, |
adj => $adj, |
requester => $requester, |
}; |
start => $start, |
} elsif (($context eq 'author') || |
end => $end, |
(($context eq 'domain') && (($role eq 'ca') || ($role eq 'aa')))) { |
credits => $credits, |
$caqueue{$cnum.':'.$cdom}{$id} = { |
context => $context, |
timestamp => $now, |
}; |
requester => $requester, |
} |
adj => $adj, |
$output .= '</li>'; |
}; |
if (($context eq 'course') || ($crstype)) { |
} elsif ($context eq 'domain') { |
$crsqueue{$cdom.'_'.$cnum}{$id} = { |
$domqueue{$id} = { |
timestamp => $now, |
timestamp => $now, |
requester => $requester, |
requester => $requester, |
adj => $adj, |
adj => $adj, |
}; |
}; |
$crsqueue{$cdom.'_'.$cnum}{'status&'.$id} = 'pending'; |
|
} elsif (($context eq 'author') || |
|
(($context eq 'domain') && (($role eq 'ca') || ($role eq 'aa')))) { |
|
$caqueue{$cnum.':'.$cdom}{$id} = { |
|
timestamp => $now, |
|
requester => $requester, |
|
adj => $adj, |
|
}; |
|
$caqueue{$cnum.':'.$cdom}{'status&'.$id} = 'pending'; |
|
} elsif ($context eq 'domain') { |
|
$domqueue{$id} = { |
|
timestamp => $now, |
|
requester => $requester, |
|
adj => $adj, |
|
}; |
|
$domqueue{'status&'.$id} = 'pending'; |
|
} |
|
} |
} |
} |
} |
} |
} |
} |
$output .= '</ul></p>'; |
$output .= '</ul></p>'; |
if (keys(%touser)) { |
if (keys(%touser)) { |
foreach my $key (keys(%touser)) { |
foreach my $key (keys(%touser)) { |
my ($uname,$udom) = split(/:/,$touser{$key}); |
my ($uname,$udom) = split(/:/,$key); |
if (&Apache::lonnet::put('queuedrolereqs',$touser{$key},$udom,$uname) eq 'ok') { |
if (&Apache::lonnet::put('nohist_queuedrolereqs',$touser{$key},$udom,$uname) eq 'ok') { |
my $owndomdesc = &Apache::lonnet::domain($udom); |
my $owndomdesc = &Apache::lonnet::domain($udom); |
&Apache::loncoursequeueadmin::send_selfserve_notification($uname.':'.$udom, |
&Apache::loncoursequeueadmin::send_selfserve_notification($uname.':'.$udom, |
'','',$owndomdesc,$now,'othdomroleuser',$requester); |
'','',$owndomdesc,$now,'othdomroleuser',$requester); |
Line 469 sub print_roles_queued {
|
Line 628 sub print_roles_queued {
|
foreach my $dom (keys(%todom)) { |
foreach my $dom (keys(%todom)) { |
if (ref($todom{$dom}) eq 'HASH') { |
if (ref($todom{$dom}) eq 'HASH') { |
my $confname = &Apache::lonnet::get_domainconfiguser($dom); |
my $confname = &Apache::lonnet::get_domainconfiguser($dom); |
if (&Apache::lonnet::put('queuedrolereqs',$todom{$dom},$dom,$confname) eq 'ok') { |
if (&Apache::lonnet::put('nohist_queuedrolereqs',$todom{$dom},$dom,$confname) eq 'ok') { |
if (ref($notifydc->{$dom}) eq 'ARRAY') { |
if (ref($notifydc->{$dom}) eq 'ARRAY') { |
if (@{$notifydc->{$dom}} > 0) { |
if (@{$notifydc->{$dom}} > 0) { |
my $notifylist = join(',',@{$notifydc->{$dom}}); |
my $notifylist = join(',',@{$notifydc->{$dom}}); |
Line 485 sub print_roles_queued {
|
Line 644 sub print_roles_queued {
|
foreach my $key (keys(%crsqueue)) { |
foreach my $key (keys(%crsqueue)) { |
my ($cdom,$cnum) = split(/_/,$key); |
my ($cdom,$cnum) = split(/_/,$key); |
if (ref($crsqueue{$key}) eq 'HASH') { |
if (ref($crsqueue{$key}) eq 'HASH') { |
&Apache::lonnet::put('othdomqueued',$crsqueue{$key},$cdom,$cnum); |
&Apache::lonnet::put('nohist_othdomqueued',$crsqueue{$key},$cdom,$cnum); |
} |
} |
} |
} |
} |
} |
Line 493 sub print_roles_queued {
|
Line 652 sub print_roles_queued {
|
foreach my $key (keys(%caqueue)) { |
foreach my $key (keys(%caqueue)) { |
my ($auname,$audom) = split(/:/,$key); |
my ($auname,$audom) = split(/:/,$key); |
if (ref($caqueue{$key}) eq 'HASH') { |
if (ref($caqueue{$key}) eq 'HASH') { |
&Apache::lonnet::put('othdomqueued',$caqueue{$key},$audom,$auname); |
&Apache::lonnet::put('nohist_othdomqueued',$caqueue{$key},$audom,$auname); |
} |
} |
} |
} |
} |
} |
if (keys(%domqueue)) { |
if (keys(%domqueue)) { |
my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'}); |
my $confname = &Apache::lonnet::get_domainconfiguser($env{'request.role.domain'}); |
&Apache::lonnet::put('othdomqueued',\%domqueue,$env{'request.role.domain'},$confname); |
&Apache::lonnet::put('nohist_othdomqueued',\%domqueue,$env{'request.role.domain'},$confname); |
} |
} |
} |
} |
|
if (keys(%{$currqueued}) > 0) { |
|
$output = '<p class="LC_warning">'. |
|
&mt("The following role assignments were already queued because the user is from another domain, and that domain's policies require approval by the user themselves or by a domain coordinator in that domain").'<ul>'; |
|
my $requester = $env{'user.name'}.':'.$env{'user.domain'}; |
|
foreach my $key (sort(keys(%{$currqueued}))) { |
|
if (ref($currqueued->{$key}) eq 'HASH') { |
|
foreach my $user (sort(keys(%{$currqueued->{$key}}))) { |
|
if (ref($currqueued->{$key}->{$user}) eq 'HASH') { |
|
my $role = $currqueued->{$key}->{$user}{'role'}; |
|
my $csec = $currqueued->{$key}->{$user}{'csec'}; |
|
my $cdom = $currqueued->{$key}->{$user}{'cdom'}; |
|
my $cnum = $currqueued->{$key}->{$user}{'cnum'}; |
|
my ($crstype,$title,$plainrole); |
|
if ($context eq 'course') { |
|
$crstype = &Apache::loncommon::course_type(); |
|
} elsif (($context eq 'domain') && ($cnum ne '')) { |
|
if (($role eq 'ca') || ($role eq 'aa')) { |
|
$title = &mt('Authoring Space belonging to: [_1]', |
|
&Apache::loncommon::plainname($cnum,$cdom)); |
|
} elsif (&Apache::lonnet::is_course($cdom,$cnum)) { |
|
my %coursedata = &Apache::lonnet::coursedescription($cdom.'_'.$cnum); |
|
$crstype = $coursedata{'type'}; |
|
$title = &mt("$crstype: [_1]",$coursedata{'description'}); |
|
} |
|
} |
|
$plainrole = &Apache::lonnet::plaintext($role,$crstype); |
|
$output .= '<li>'.&mt('User: [_1]',$currqueued->{$key}->{$user}{'uname'}).' | '. |
|
&mt('Domain: [_1]',$currqueued->{$key}->{$user}{'udom'}).' | '. |
|
&mt('Role: [_1]',$plainrole); |
|
if ($title ne '') { |
|
$output .= ' | '.$title; |
|
} |
|
if ($crstype) { |
|
if ($csec ne '') { |
|
$output .= ' | '.&mt('Section: [_1]',$csec); |
|
} |
|
} |
|
$output .= '</li>'; |
|
} |
|
} |
|
} |
|
} |
|
$output .= '</ul></p>'; |
|
} |
return $output; |
return $output; |
} |
} |
|
|
Line 4720 sub upfile_drop_add {
|
Line 4923 sub upfile_drop_add {
|
} |
} |
$r->rflush; |
$r->rflush; |
my (%got_role_approvals,%got_instdoms,%process_by,%instdoms, |
my (%got_role_approvals,%got_instdoms,%process_by,%instdoms, |
%pending,%reject,%notifydc); |
%pending,%reject,%notifydc,%status,%unauthorized,%currqueued); |
|
|
my %counts = ( |
my %counts = ( |
user => 0, |
user => 0, |
Line 5262 sub upfile_drop_add {
|
Line 5465 sub upfile_drop_add {
|
next if (&restricted_dom($context,$item,$userdomain,$username,$role,$startdate, |
next if (&restricted_dom($context,$item,$userdomain,$username,$role,$startdate, |
$enddate,$crsdom,$crsnum,$sec,$credits,\%process_by, |
$enddate,$crsdom,$crsnum,$sec,$credits,\%process_by, |
\%instdoms,\%got_role_approvals,\%got_instdoms,\%reject, |
\%instdoms,\%got_role_approvals,\%got_instdoms,\%reject, |
\%pending,\%notifydc)); |
\%pending,\%notifydc,\%status,\%unauthorized,\%currqueued)); |
} |
} |
&modifystudent($userdomain,$username,$cid,$sec, |
&modifystudent($userdomain,$username,$cid,$sec, |
$desiredhost,$context); |
$desiredhost,$context); |
Line 5300 sub upfile_drop_add {
|
Line 5503 sub upfile_drop_add {
|
next if (&restricted_dom($context,$item,$userdomain,$username,$possrole, |
next if (&restricted_dom($context,$item,$userdomain,$username,$possrole, |
$startdate,$enddate,$crsdom,$crsnum,$sec, |
$startdate,$enddate,$crsdom,$crsnum,$sec, |
$credits,\%process_by,\%instdoms,\%got_role_approvals, |
$credits,\%process_by,\%instdoms,\%got_role_approvals, |
\%got_instdoms,\%reject,\%pending,\%notifydc)); |
\%got_instdoms,\%reject,\%pending,\%notifydc, |
|
\%status,\%unauthorized,\%currqueued)); |
} |
} |
($userres{$sec},$authres{$sec},$roleres{$sec},$idres{$sec}) = |
($userres{$sec},$authres{$sec},$roleres{$sec},$idres{$sec}) = |
&modifyuserrole($context,$setting, |
&modifyuserrole($context,$setting, |
Line 5328 sub upfile_drop_add {
|
Line 5532 sub upfile_drop_add {
|
$item .= '_'.$possrole; |
$item .= '_'.$possrole; |
next if (&restricted_dom($context,$item,$userdomain,$username,$possrole,$startdate,$enddate, |
next if (&restricted_dom($context,$item,$userdomain,$username,$possrole,$startdate,$enddate, |
$crsdom,$crsnum,$singlesec,$credits,\%process_by,\%instdoms, |
$crsdom,$crsnum,$singlesec,$credits,\%process_by,\%instdoms, |
\%got_role_approvals,\%got_instdoms,\%reject,\%pending,\%notifydc)); |
\%got_role_approvals,\%got_instdoms,\%reject,\%pending,\%notifydc, |
|
\%status,\%unauthorized,\%currqueued)); |
} |
} |
($userresult,$authresult,$roleresult,$idresult) = |
($userresult,$authresult,$roleresult,$idresult) = |
&modifyuserrole($context,$setting, |
&modifyuserrole($context,$setting, |
Line 5379 sub upfile_drop_add {
|
Line 5584 sub upfile_drop_add {
|
} |
} |
$r->print(&print_namespacing_alerts($domain,\%alerts,\%curr_rules)); |
$r->print(&print_namespacing_alerts($domain,\%alerts,\%curr_rules)); |
$r->print(&passwdrule_alerts($domain,\%showpasswdrules)); |
$r->print(&passwdrule_alerts($domain,\%showpasswdrules)); |
if (keys(%reject)) { |
if ((keys(%reject)) || (keys(%unauthorized))) { |
$r->print(&print_roles_rejected($context,\%reject)); |
$r->print(&print_roles_rejected($context,\%reject,\%unauthorized)); |
} |
} |
if (keys(%pending)) { |
if ((keys(%pending)) || (keys(%currqueued))) { |
$r->print(&print_roles_queued($context,\%pending,\%notifydc)); |
$r->print(&print_roles_queued($context,\%pending,\%notifydc,\%currqueued)); |
} |
} |
##################################### |
##################################### |
# Display list of students to drop # |
# Display list of students to drop # |
Line 5579 sub update_user_list {
|
Line 5784 sub update_user_list {
|
$crstype = &Apache::loncommon::course_type(); |
$crstype = &Apache::loncommon::course_type(); |
} |
} |
my (@changelist,%got_role_approvals,%got_instdoms,%process_by,%instdoms, |
my (@changelist,%got_role_approvals,%got_instdoms,%process_by,%instdoms, |
%pending,%reject,%notifydc); |
%pending,%reject,%notifydc,%status,%unauthorized,%currqueued); |
if ($choice eq 'drop') { |
if ($choice eq 'drop') { |
@changelist = &Apache::loncommon::get_env_multiple('form.droplist'); |
@changelist = &Apache::loncommon::get_env_multiple('form.droplist'); |
} else { |
} else { |
Line 5697 sub update_user_list {
|
Line 5902 sub update_user_list {
|
if ($choice eq 'reenable') { |
if ($choice eq 'reenable') { |
next if (&restricted_dom($context,$id,$udom,$uname,$role,$now,$end,$cdom,$cnum, |
next if (&restricted_dom($context,$id,$udom,$uname,$role,$now,$end,$cdom,$cnum, |
$sec,$credits,\%process_by,\%instdoms,\%got_role_approvals, |
$sec,$credits,\%process_by,\%instdoms,\%got_role_approvals, |
\%got_instdoms,\%reject,\%pending,\%notifydc)); |
\%got_instdoms,\%reject,\%pending,\%notifydc, |
|
\%status,\%unauthorized,\%currqueued)); |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context,$credits,$instsec); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context,$credits,$instsec); |
} else { |
} else { |
Line 5708 sub update_user_list {
|
Line 5914 sub update_user_list {
|
} elsif ($choice eq 'activate') { |
} elsif ($choice eq 'activate') { |
next if (&restricted_dom($context,$id,$udom,$uname,$role,$now,$end,$cdom,$cnum, |
next if (&restricted_dom($context,$id,$udom,$uname,$role,$now,$end,$cdom,$cnum, |
$sec,$credits,\%process_by,\%instdoms,\%got_role_approvals, |
$sec,$credits,\%process_by,\%instdoms,\%got_role_approvals, |
\%got_instdoms,\%reject,\%pending,\%notifydc)); |
\%got_instdoms,\%reject,\%pending,\%notifydc, |
|
\%status,\%unauthorized,\%currqueued)); |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context,$credits,$instsec); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context,$credits,$instsec); |
} else { |
} else { |
Line 5718 sub update_user_list {
|
Line 5925 sub update_user_list {
|
} elsif ($choice eq 'chgdates') { |
} elsif ($choice eq 'chgdates') { |
next if (&restricted_dom($context,$id,$udom,$uname,$role,$start,$end,$cdom,$cnum, |
next if (&restricted_dom($context,$id,$udom,$uname,$role,$start,$end,$cdom,$cnum, |
$sec,$credits,\%process_by,\%instdoms,\%got_role_approvals, |
$sec,$credits,\%process_by,\%instdoms,\%got_role_approvals, |
\%got_instdoms,\%reject,\%pending,\%notifydc)); |
\%got_instdoms,\%reject,\%pending,\%notifydc, |
|
\%status,\%unauthorized,\%currqueued)); |
if ($role eq 'st') { |
if ($role eq 'st') { |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context,$credits,$instsec); |
$result = &Apache::lonnet::modify_student_enrollment($udom,$uname,undef,undef,undef,undef,undef,$sec,$end,$start,$type,$locktype,$cid,'',$context,$credits,$instsec); |
} else { |
} else { |
Line 5928 sub update_user_list {
|
Line 6136 sub update_user_list {
|
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype)); |
$r->print(&make_dates_default($startdate,$enddate,$context,$crstype)); |
} |
} |
} |
} |
if (keys(%reject)) { |
if ((keys(%reject)) || (keys(%unauthorized))) { |
$r->print(&print_roles_rejected($context,\%reject)); |
$r->print(&print_roles_rejected($context,\%reject,\%unauthorized)); |
} |
} |
if (keys(%pending)) { |
if ((keys(%pending)) || (keys(%currqueued))) { |
$r->print(&print_roles_queued($context,\%pending,\%notifydc)); |
$r->print(&print_roles_queued($context,\%pending,\%notifydc,\%currqueued)); |
} |
} |
my $linktext = &mt('Display User Lists'); |
my $linktext = &mt('Display User Lists'); |
if ($choice eq 'drop') { |
if ($choice eq 'drop') { |