version 1.66, 2023/03/29 16:01:13
|
version 1.70, 2025/03/18 18:57:28
|
Line 271 sub send_selfserve_notification {
|
Line 271 sub send_selfserve_notification {
|
} |
} |
} elsif ($context eq 'othdomroleuser') { |
} elsif ($context eq 'othdomroleuser') { |
my $linktext = 'Roles'; |
my $linktext = 'Roles'; |
if (&Apache::loncommon::show_course()) { |
if ($notifylist =~ /^($match_username):($match_domain)$/) { |
$linktext = 'Courses'; |
if (&Apache::loncommon::show_course($2,$1)) { |
|
$linktext = 'Courses'; |
|
} |
} |
} |
$rawsubj = 'Role Assignment Approval'; |
$rawsubj = 'Role Assignment Approval'; |
push(@rawmsg,{ |
push(@rawmsg,{ |
mt => 'A domain different to your own LON-CAPA domain ([_1]) wants to assign you a role in their domain.', |
mt => 'A domain different to your own LON-CAPA domain [_1]wants to assign you a role in their domain.', |
args => ["\n$contextdesc\n"], |
args => ["\n$contextdesc\n"], |
}, |
}, |
{ |
{ |
mt =>"[_1]Click $linktext at top right, then click 'Manage Role Requests' in the gray Functions bar ". |
mt =>"[_1]Click $linktext at top right, then click 'Show pending' in the gray Functions bar ". |
"to display a list of pending role assignments in other domain(s), which you can either accept or reject.", |
"to display a list of pending role assignments in other domain(s), which you can either accept or reject.", |
args => ["\n\n"], |
args => ["\n\n"], |
}); |
}); |
Line 295 sub send_selfserve_notification {
|
Line 297 sub send_selfserve_notification {
|
-> Queued Role Assignments (this domain) [_3]to display a list of pending requests, which you can either approve or reject.', |
-> Queued Role Assignments (this domain) [_3]to display a list of pending requests, which you can either approve or reject.', |
args => ["\n","\n\n ","\n\n"], |
args => ["\n","\n\n ","\n\n"], |
}); |
}); |
} elsif ($context eq 'othdombydc') { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
$rawsubj = 'Status of Role Assignment Requests'; |
$rawsubj = 'Status of Role Assignment Requests'; |
push(@rawmsg,{ |
if ($context eq 'othdombydc') { |
mt =>'A Domain Coordinator in a domain different to your own LON-CAPA domain '. |
push(@rawmsg,{ |
'has taken action on queued role assignment(s) in this domain for user(s) from that other domain ([_1])', |
mt =>'A Domain Coordinator in a domain different to your own LON-CAPA domain '. |
args => ["\n$contextdesc\n"], |
'has taken action on queued role assignment(s) in this domain for user(s) from that other domain [_1]', |
}); |
args => ["\n$contextdesc\n"], |
|
}); |
|
} elsif ($context eq 'othdombyuser') { |
|
push(@rawmsg,{ |
|
mt => "Action has been taken by a user to whom you had assigned role(s) ". |
|
"which had been queued, pending acceptance of the role(s).", |
|
args => [], |
|
}); |
|
} |
|
if (ref($textstr) eq 'ARRAY') { |
|
push(@rawmsg,@{$textstr}); |
|
} |
} |
} |
my @to_notify = split(/,/,$notifylist); |
my @to_notify = split(/,/,$notifylist); |
my $numsent = 0; |
my $numsent = 0; |
Line 340 sub send_selfserve_notification {
|
Line 353 sub send_selfserve_notification {
|
$message = ''; |
$message = ''; |
foreach my $item (@rawmsg) { |
foreach my $item (@rawmsg) { |
if (ref($item) eq 'HASH') { |
if (ref($item) eq 'HASH') { |
$message .= &mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n"; |
if (ref($item->{args}) eq 'ARRAY') { |
|
$message .= &mt_user($sender_lh,$item->{mt},@{$item->{args}})."\n"; |
|
} else { |
|
$message .= &mt_user($sender_lh,$item->{mt})."\n"; |
|
} |
} |
} |
} |
} |
&Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message, |
&Apache::lonmsg::process_sent_mail($subject,'',$numsent,$stamp,$uname,$udom,$msgcount,$cid,$$,$message, |
Line 390 sub send_selfserve_notification {
|
Line 407 sub send_selfserve_notification {
|
if ($rejectedlist) { |
if ($rejectedlist) { |
$message .= "\n\n".&mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist; |
$message .= "\n\n".&mt_user($sender_lh,'Rejected LON-CAPA account requests:')."\n".$rejectedlist; |
} |
} |
} elsif ($context eq 'othdombydc') { |
|
if ($approvedlist) { |
|
$message .= "\n\n".&mt_user($sender_lh,'Approved LON-CAPA role assignments:')."\n".$approvedlist; |
|
} |
|
if ($rejectedlist) { |
|
$message .= "\n\n".&mt_user($sender_lh,'Rejected LON-CAPA role assignments:')."\n".$rejectedlist; |
|
} |
|
} |
} |
$status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1, |
$status .= &Apache::lonmsg::user_normal_msg($ccname,$ccdom,$subject,$message,undef,undef,undef,1, |
\%sentmessage,undef,undef,undef,1,$recipid).','; |
\%sentmessage,undef,undef,undef,1,$recipid).','; |
Line 446 sub display_queued_requests {
|
Line 456 sub display_queued_requests {
|
%requesthash = &Apache::lonnet::dump($namespace,$dom,$cnum); |
%requesthash = &Apache::lonnet::dump($namespace,$dom,$cnum); |
} |
} |
} elsif ($context eq 'othdomaction') { |
} elsif ($context eq 'othdomaction') { |
$formaction = '/adm/createuser'; |
|
$namespace = 'nohist_queuedrolereqs'; |
$namespace = 'nohist_queuedrolereqs'; |
if ($secondary eq 'domain') { |
if ($secondary eq 'domain') { |
|
$formaction = '/adm/createuser'; |
my $confname = &Apache::lonnet::get_domainconfiguser($dom); |
my $confname = &Apache::lonnet::get_domainconfiguser($dom); |
%requesthash = &Apache::lonnet::dump($namespace,$dom,$confname); |
%requesthash = &Apache::lonnet::dump($namespace,$dom,$confname); |
} else { |
} else { |
|
$formaction = '/adm/roles'; |
%requesthash = &Apache::lonnet::dump($namespace,$dom,$cnum); |
%requesthash = &Apache::lonnet::dump($namespace,$dom,$cnum); |
} |
} |
$nextelement = '<input type="hidden" name="state" value="done" />'; |
$nextelement = '<input type="hidden" name="state" value="done" />'; |
Line 550 sub display_queued_requests {
|
Line 561 sub display_queued_requests {
|
$output .= '<h3>'.&mt('Community role assignments for users from another domain which were/are queued for approval').'</h3>'; |
$output .= '<h3>'.&mt('Community role assignments for users from another domain which were/are queued for approval').'</h3>'; |
} |
} |
} elsif ($context eq 'othdomaction') { |
} elsif ($context eq 'othdomaction') { |
if ($secondary eq 'user') { |
unless ($secondary eq 'user') { |
$output .= '<h3>'.&mt('Role assignments for you in other domains, queued pending your acceptance of the role.').'</h3>'; |
|
} elsif ($secondary eq 'domain') { |
|
$output .= '<h3>'.&mt('Role assignments in other domains, queued pending domain coordinator approval in this domain.').'</h3>'; |
$output .= '<h3>'.&mt('Role assignments in other domains, queued pending domain coordinator approval in this domain.').'</h3>'; |
} |
} |
} else { |
} else { |
Line 563 sub display_queued_requests {
|
Line 572 sub display_queued_requests {
|
} else { |
} else { |
$output .= &build_queue_display($dom,$context,\%queue_by_date,$secondary). |
$output .= &build_queue_display($dom,$context,\%queue_by_date,$secondary). |
'<input type="hidden" name="queue" value="approval" />'; |
'<input type="hidden" name="queue" value="approval" />'; |
|
if ($secondary eq 'user') { |
|
$output .= "\n".'<input type="hidden" name="approvals" value="show" />'."\n"; |
|
} |
} |
} |
if ($context eq 'pending') { |
if ($context eq 'pending') { |
$output .= '<br /><input type="submit" name="validationcheck" value="'. |
$output .= '<br /><input type="submit" name="validationcheck" value="'. |
Line 574 sub display_queued_requests {
|
Line 586 sub display_queued_requests {
|
} |
} |
$output .= '</form>'; |
$output .= '</form>'; |
} else { |
} else { |
$output .= '<div class="LC_info">'; |
if (($context eq 'othdomaction') && ($secondary eq 'user')) { |
|
$output .= '<span class="LC_info">'; |
|
} else { |
|
$output .= '<div class="LC_info">'; |
|
} |
if ($context eq 'course') { |
if ($context eq 'course') { |
$output .= &mt('There are currently no enrollment requests awaiting approval.'); |
$output .= &mt('There are currently no enrollment requests awaiting approval.'); |
} elsif (($context eq 'pending') || ($context eq 'displaypending')) { |
} elsif (($context eq 'pending') || ($context eq 'displaypending')) { |
Line 595 sub display_queued_requests {
|
Line 611 sub display_queued_requests {
|
} |
} |
} elsif ($context eq 'othdomaction') { |
} elsif ($context eq 'othdomaction') { |
if ($secondary eq 'user') { |
if ($secondary eq 'user') { |
$output .= &mt('There are currently no pending role assignments for you in other domains, queued pending your acceptance of the role.'); |
$output .= &mt('No role assignments for you in other domains currently awaiting your acceptance'); |
} elsif ($secondary eq 'domain') { |
} elsif ($secondary eq 'domain') { |
$output .= &mt('There are currently no pending role assignments in other domains, queued pending domain coordinator approval in this domain.'); |
$output .= &mt('No role assignments in other domains currently awaiting domain coordinator approval'); |
} |
} |
} else { |
} else { |
$output .= &mt('There are currently no course or community requests awaiting approval.'); |
$output .= &mt('There are currently no course or community requests awaiting approval.'); |
} |
} |
$output .= '</div>'; |
if (($context eq 'othdomaction') && ($secondary eq 'user')) { |
|
$output .= '</span>'; |
|
} else { |
|
$output .= '</div>'; |
|
} |
} |
} |
return $output; |
return $output; |
} |
} |
Line 713 sub build_queue_display {
|
Line 733 sub build_queue_display {
|
} |
} |
if (($role eq 'ca') || ($role eq 'aa')) { |
if (($role eq 'ca') || ($role eq 'aa')) { |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
$location = &mt('Author').': '.&Apache::loncommon::plainname($auname,$audom); |
$location = &mt('Domain').': '.&Apache::lonnet::domain($audom,'description').'<br />'. |
|
&mt('Author').': '.&Apache::loncommon::plainname($auname,$audom); |
} elsif ($role eq 'co') { |
} elsif ($role eq 'co') { |
my ($cdom,$cnum) = ($extent =~ m{^/($match_domain)/($match_courseid)}); |
my ($cdom,$cnum) = ($extent =~ m{^/($match_domain)/($match_courseid)}); |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
my %info = &Apache::lonnet::coursedescription("$cdom/$cnum",{'one_time' => 1}); |
my %info = &Apache::lonnet::coursedescription("$cdom/$cnum",{'one_time' => 1}); |
$crstype = $info{'type'}; |
$crstype = $info{'type'}; |
$location = &mt('Community').': '.$info{'description'}; |
$location = &mt('Domain').': '.&Apache::lonnet::domain($cdom,'description').'<br />'. |
|
&mt('Community').': '.$info{'description'}; |
$showrole = &Apache::lonnet::plaintext($role,'Community'); |
$showrole = &Apache::lonnet::plaintext($role,'Community'); |
} |
} |
} elsif ($role =~ m{^cr/}) { |
} elsif ($role =~ m{^cr/}) { |
Line 728 sub build_queue_display {
|
Line 750 sub build_queue_display {
|
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
my %info = &Apache::lonnet::coursedescription("$cdom/$cnum",{'one_time' => 1}); |
my %info = &Apache::lonnet::coursedescription("$cdom/$cnum",{'one_time' => 1}); |
$crstype = $info{'type'}; |
$crstype = $info{'type'}; |
$location = &mt($crstype).': '.$info{'description'}; |
$location = &mt('Domain').': '.&Apache::lonnet::domain($cdom,'description').'<br />'. |
|
&mt($crstype).': '.$info{'description'}; |
if ($csec ne '') { |
if ($csec ne '') { |
$location .= '<br />'.&mt('Section').': '.$csec; |
$location .= '<br />'.&mt('Section').': '.$csec; |
} |
} |
Line 741 sub build_queue_display {
|
Line 764 sub build_queue_display {
|
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
if (&Apache::lonnet::is_course($cdom,$cnum)) { |
my %info = &Apache::lonnet::coursedescription("$cdom/$cnum",{'one_time' => 1}); |
my %info = &Apache::lonnet::coursedescription("$cdom/$cnum",{'one_time' => 1}); |
$crstype = $info{'type'}; |
$crstype = $info{'type'}; |
$location = &mt($crstype).': '.$info{'description'}; |
$location = &mt('Domain').': '.&Apache::lonnet::domain($cdom,'description').'<br />'. |
|
&mt($crstype).': '.$info{'description'}; |
if ($csec ne '') { |
if ($csec ne '') { |
$location .= '<br />'.&mt('Section').': '.$csec; |
$location .= '<br />'.&mt('Section').': '.$csec; |
} |
} |
} |
} |
} else { |
} else { |
my ($domain) = ($extent =~ m{^/($match_domain)/}); |
my ($domain) = ($extent =~ m{^/($match_domain)/$}); |
$location = &mt('Domain').': '.&Apache::lonnet::domain($domain,'description'); |
$location = &mt('Domain').': '.&Apache::lonnet::domain($domain,'description'); |
} |
} |
last; |
last; |
Line 1050 sub print_filter_menu {
|
Line 1074 sub print_filter_menu {
|
my $nolink = 1; |
my $nolink = 1; |
my $output = '<table><tr><td valign="top">'. |
my $output = '<table><tr><td valign="top">'. |
'<span class="LC_nobreak"><b>'.&mt('Changes/page:').'</b></span><br />'. |
'<span class="LC_nobreak"><b>'.&mt('Changes/page:').'</b></span><br />'. |
&Apache::lonmeta::selectbox('show',$curr->{'show'},'',undef, |
&Apache::lonmeta::selectbox('show',$curr->{'show'},'','',undef, |
(&mt('all'),5,10,20,50,100,1000,10000)). |
(&mt('all'),5,10,20,50,100,1000,10000)). |
'</td><td> </td>'; |
'</td><td> </td>'; |
my $startform = |
my $startform = |
Line 1251 sub update_request_queue {
|
Line 1275 sub update_request_queue {
|
if ($context eq 'othdombydc') { |
if ($context eq 'othdombydc') { |
$confname = &Apache::lonnet::get_domainconfiguser($cdom); |
$confname = &Apache::lonnet::get_domainconfiguser($cdom); |
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$confname); |
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$confname); |
} else { |
} elsif ($context eq 'othdombyuser') { |
%requesthash = &Apache::lonnet::dump($namespace,$cdom,$cnum); |
%requesthash = &Apache::lonnet::dump($namespace); |
} |
} |
$domdesc = &Apache::lonnet::domain($cdom); |
$domdesc = &Apache::lonnet::domain($cdom); |
$dbname = 'nohist_othdomqueued'; |
$dbname = 'nohist_othdomqueued'; |
Line 1481 sub update_request_queue {
|
Line 1505 sub update_request_queue {
|
} |
} |
push(@toremove,@invalidusers); |
push(@toremove,@invalidusers); |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
|
my ($num,$extent,$role,$uname,$udom,$key,$logmsg,$result); |
if ($context eq 'othdombydc') { |
if ($context eq 'othdombydc') { |
my ($num,$extent,$role,$uname,$udom) = split(/:/,$item); |
($num,$extent,$role,$uname,$udom) = split(/:/,$item); |
my ($logmsg,$result); |
|
if ($udom eq $cdom) { |
if ($udom eq $cdom) { |
my $key = 'pending:'.$uname.':'.$extent.':'.$role; |
$key = 'pending:'.$uname.':'.$extent.':'.$role; |
if (exists($requesthash{$key})) { |
} |
if (ref($requesthash{$key}) eq 'HASH') { |
} elsif ($context eq 'othdombyuser') { |
my $requester = $requesthash{$key}->{'requester'}; |
($num,$extent,$role) = split(/:/,$item); |
my ($requname,$requdom) = split(/:/,$requester); |
$key = 'pending:'.$extent.':'.$role; |
my $start = $requesthash{$key}->{'start'}; |
$uname = $env{'user.name'}; |
my $end = $requesthash{$key}->{'end'}; |
$udom = $env{'user.domain'}; |
my $credits = $requesthash{$key}->{'credits'}; |
} |
my $reqcontext = $requesthash{$key}->{'context'}; |
if (($key) && (exists($requesthash{$key}))) { |
if ((&Apache::lonnet::homeserver($uname,$udom) ne 'no_host') && |
if (ref($requesthash{$key}) eq 'HASH') { |
(&Apache::lonnet::homeserver($requname,$requdom) ne 'no_host')) { |
my $requester = $requesthash{$key}->{'requester'}; |
if (($role eq 'ca') || ($role eq 'aa')) { |
my ($requname,$requdom) = split(/:/,$requester); |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
my $start = $requesthash{$key}->{'start'}; |
if (&Apache::lonnet::homeserver($auname,$audom) ne 'no_host') { |
my $end = $requesthash{$key}->{'end'}; |
if ($requester eq $auname.':'.$audom) { |
my $credits = $requesthash{$key}->{'credits'}; |
unless ($gotroles{$requester}) { |
my $reqcontext = $requesthash{$key}->{'context'}; |
&requester_roles($auname,$audom,\%requesteractive); |
if ((($context eq 'othdombydc') && |
$gotroles{$requester} = 1; |
(&Apache::lonnet::homeserver($uname,$udom) ne 'no_host')) || |
} |
($context eq 'othdombyuser')) { |
if (ref($requesteractive{$requester}) eq 'HASH') { |
if (&Apache::lonnet::homeserver($requname,$requdom) ne 'no_host') { |
if ($requesteractive{$requester}{':'.$audom.':au'}) { |
if (($role eq 'ca') || ($role eq 'aa')) { |
$result = &Apache::lonnet::assignrole($udom,$uname,$extent,$role, |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
$end,$start,'','',$reqcontext); |
if (&Apache::lonnet::homeserver($auname,$audom) ne 'no_host') { |
} |
if ($requester eq $auname.':'.$audom) { |
} |
unless ($gotroles{$requester}) { |
|
&requester_roles($auname,$audom,\%requesteractive); |
|
$gotroles{$requester} = 1; |
} |
} |
} |
if (ref($requesteractive{$requester}) eq 'HASH') { |
} elsif (($role eq 'co') || ($role eq 'cc')) { |
if ($requesteractive{$requester}{':'.$audom.':au'}) { |
my ($crsdom,$crsnum) = ($extent =~ m{^/($match_domain)/($match_courseid)}); |
$result = &Apache::lonnet::assignrole($udom,$uname,$extent,$role, |
if (&Apache::lonnet::is_course($crsdom,$crsnum)) { |
$end,$start,'','',$reqcontext, |
my %info = &Apache::lonnet::coursedescription("$crsdom/$crsnum",{'one_time' => 1}); |
$context,$requester); |
if ((($role eq 'co') && ($info{'type'} eq 'Community')) || |
|
(($role eq 'cc') && ($info{'type'} ne 'Community'))) { |
|
if ($info{'internal.courseowner'} eq $requester) { |
|
unless ($gotroles{$requester}) { |
|
&requester_roles($requname,$requdom,\%requesteractive); |
|
$gotroles{$requester} = 1; |
|
} |
|
if (ref($requesteractive{$requester}) eq 'HASH') { |
|
if ($requesteractive{$requester}{"$crsnum:$crsdom:$role"}) { |
|
($logmsg,$result) = |
|
&Apache::loncommon::commit_standardrole($udom,$uname,$extent,$role,$start, |
|
$end,$crsdom,$crsnum,'', |
|
$reqcontext); |
|
} |
|
} |
|
} |
} |
} |
} |
} |
} |
} elsif ($role =~ m{^(cr)/($match_domain)/($match_username)/(\w+)$}) { |
} |
my ($mrole,$crudom,$cruname,$rolename) = ($1,$2,$3,$4); |
} elsif (($role eq 'co') || ($role eq 'cc')) { |
my ($crsdom,$crsnum,$csec) = |
my ($crsdom,$crsnum) = ($extent =~ m{^/($match_domain)/($match_courseid)}); |
($extent =~ m{^/($match_domain)/($match_courseid)(?:|/(\w+))$}); |
if (&Apache::lonnet::is_course($crsdom,$crsnum)) { |
if (&Apache::lonnet::is_course($crsdom,$crsnum)) { |
my %info = &Apache::lonnet::coursedescription("$crsdom/$crsnum",{'one_time' => 1}); |
my ($rdummy,$roledef) = |
if ((($role eq 'co') && ($info{'type'} eq 'Community')) || |
&Apache::lonnet::get('roles',["rolesdef_$rolename"],$crudom,$cruname); |
(($role eq 'cc') && ($info{'type'} ne 'Community'))) { |
if (($rdummy ne 'con_lost') && ($roledef ne '')) { |
if ($info{'internal.courseowner'} eq $requester) { |
unless ($gotroles{$requester}) { |
unless ($gotroles{$requester}) { |
&requester_roles($requname,$requdom,\%requesteractive); |
&requester_roles($requname,$requdom,\%requesteractive); |
$gotroles{$requester} = 1; |
$gotroles{$requester} = 1; |
} |
} |
if (ref($requesteractive{$requester}) eq 'HASH') { |
if (ref($requesteractive{$requester}) eq 'HASH') { |
if (&requester_has_perm($crsdom,$crsnum,$mrole,$requesteractive{$requester})) { |
if ($requesteractive{$requester}{"$crsnum:$crsdom:$role"}) { |
($logmsg,$result) = |
($logmsg,$result) = |
&Apache::loncommon::commit_customrole($udom,$uname,$extent,$crudom,$cruname, |
&Apache::loncommon::commit_standardrole($udom,$uname,$extent,$role,$start, |
$rolename,$start,$end,$reqcontext); |
$end,$crsdom,$crsnum,'', |
|
$reqcontext,'',$context, |
|
$requester); |
} |
} |
} |
} |
} |
} |
} |
} |
} else { |
} |
my $process; |
} elsif ($role =~ m{^(cr)/($match_domain)/($match_username)/(\w+)$}) { |
foreach my $type ('course','domain') { |
my ($mrole,$crudom,$cruname,$rolename) = ($1,$2,$3,$4); |
if (grep(/^\Q$role\E$/,@{$roles_by_context{$type}})) { |
my ($crsdom,$crsnum,$csec) = |
if ($type eq 'course') { |
($extent =~ m{^/($match_domain)/($match_courseid)(?:|/(\w+))$}); |
my ($crsdom,$crsnum,$csec) = ($extent =~ m{^/($match_domain)/($match_courseid)(?:|/(\w+))$}); |
if (&Apache::lonnet::is_course($crsdom,$crsnum)) { |
if (&Apache::lonnet::is_course($crsdom,$crsnum)) { |
my ($rdummy,$roledef) = |
my $typeok; |
&Apache::lonnet::get('roles',["rolesdef_$rolename"],$crudom,$cruname); |
if ($role eq 'cc') { |
if (($rdummy ne 'con_lost') && ($roledef ne '')) { |
my %info = &Apache::lonnet::coursedescription("$crsdom/$crsnum",{'one_time' => 1}); |
unless ($gotroles{$requester}) { |
if ($info{'type'} eq 'Course') { |
&requester_roles($requname,$requdom,\%requesteractive); |
$typeok = 1; |
$gotroles{$requester} = 1; |
} |
} |
} else { |
if (ref($requesteractive{$requester}) eq 'HASH') { |
|
if (&requester_has_perm($crsdom,$crsnum,$mrole,$requesteractive{$requester})) { |
|
($logmsg,$result) = |
|
&Apache::loncommon::commit_customrole($udom,$uname,$extent,$crudom,$cruname, |
|
$rolename,$start,$end,$reqcontext, |
|
$context,$requester); |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
my $process; |
|
foreach my $type ('course','domain') { |
|
if (grep(/^\Q$role\E$/,@{$roles_by_context{$type}})) { |
|
if ($type eq 'course') { |
|
my ($crsdom,$crsnum,$csec) = ($extent =~ m{^/($match_domain)/($match_courseid)(?:|/(\w+))$}); |
|
if (&Apache::lonnet::is_course($crsdom,$crsnum)) { |
|
my $typeok; |
|
if ($role eq 'cc') { |
|
my %info = &Apache::lonnet::coursedescription("$crsdom/$crsnum",{'one_time' => 1}); |
|
if ($info{'type'} eq 'Course') { |
$typeok = 1; |
$typeok = 1; |
} |
} |
if ($typeok) { |
} else { |
unless ($gotroles{$requester}) { |
$typeok = 1; |
&requester_roles($requname,$requdom,\%requesteractive); |
|
$gotroles{$requester} = 1; |
|
} |
|
if (ref($requesteractive{$requester}) eq 'HASH') { |
|
if (&requester_has_perm($crsdom,$crsnum,$role,$requesteractive{$requester})) { |
|
($logmsg,$result) = |
|
&Apache::loncommon::commit_standardrole($udom,$uname,$extent,$role,$start, |
|
$end,$crsdom,$crsnum,$csec, |
|
$reqcontext,$credits); |
|
} |
|
} |
|
} |
|
} |
} |
} else { |
if ($typeok) { |
my ($domain) = ($extent =~ m{^/($match_domain)/}); |
|
if (&Apache::lonnet::domain($domain) ne '') { |
|
unless ($gotroles{$requester}) { |
unless ($gotroles{$requester}) { |
&requester_roles($requname,$requdom,\%requesteractive); |
&requester_roles($requname,$requdom,\%requesteractive); |
$gotroles{$requester} = 1; |
$gotroles{$requester} = 1; |
} |
} |
if (&requester_has_perm($domain,'',$role,$requesteractive{$requester})) { |
if (ref($requesteractive{$requester}) eq 'HASH') { |
$result = &Apache::lonnet::assignrole($udom,$uname,$extent,$role, |
if (&requester_has_perm($crsdom,$crsnum,$role,$requesteractive{$requester})) { |
$end,$start,'','',$reqcontext); |
($logmsg,$result) = |
|
&Apache::loncommon::commit_standardrole($udom,$uname,$extent,$role,$start, |
|
$end,$crsdom,$crsnum,$csec, |
|
$reqcontext,$credits,$context, |
|
$requester); |
|
} |
} |
} |
} |
} |
} |
} |
last; |
} else { |
|
my ($domain) = ($extent =~ m{^/($match_domain)/}); |
|
if (&Apache::lonnet::domain($domain) ne '') { |
|
unless ($gotroles{$requester}) { |
|
&requester_roles($requname,$requdom,\%requesteractive); |
|
$gotroles{$requester} = 1; |
|
} |
|
if (&requester_has_perm($domain,'',$role,$requesteractive{$requester})) { |
|
$result = &Apache::lonnet::assignrole($udom,$uname,$extent,$role, |
|
$end,$start,'','',$reqcontext, |
|
$context,$requester); |
|
} |
|
} |
} |
} |
|
last; |
} |
} |
} |
} |
} |
} |
Line 1621 sub update_request_queue {
|
Line 1658 sub update_request_queue {
|
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'approved'},$crsdom,$crsnum); |
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'approved'},$crsdom,$crsnum); |
} |
} |
if ($statusres eq 'ok') { |
if ($statusres eq 'ok') { |
my $newkey = 'approved:'.$uname.':'.$extent.':'.$role; |
my $newkey; |
|
if ($context eq 'othdombydc') { |
|
$newkey = 'approved:'.$uname.':'.$extent.':'.$role; |
|
} elsif ($context eq 'othdombyuser') { |
|
$newkey = 'approved:'.$extent.':'.$role; |
|
} |
$requesthash{$newkey} = $requesthash{$key}; |
$requesthash{$newkey} = $requesthash{$key}; |
delete($requesthash{$key}); |
delete($requesthash{$key}); |
push(@toremove,$key); |
push(@toremove,$key); |
push(@completed,$item); |
push(@completed,$item); |
} |
} |
|
} else { |
|
push(@warn_approves,$key); |
} |
} |
} |
} |
} |
} |
} |
} |
} else { |
|
my ($num,$extent,$role) = split(/:/,$item); |
|
if (exists($requesthash{$extent.':'.$role})) { |
|
if (ref($requesthash{$extent.':'.$role}) eq 'HASH') { |
|
#FIXME |
|
#check if extent is valid |
|
#check if role is valid |
|
#check requester privs |
|
} |
|
} |
|
} |
} |
} else { |
} else { |
my ($num,$cnum) = split(':',$item); |
my ($num,$cnum) = split(':',$item); |
Line 1842 sub update_request_queue {
|
Line 1876 sub update_request_queue {
|
push(@warn_rejects,$uname); |
push(@warn_rejects,$uname); |
} |
} |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
|
my ($extent,$role,$uname,$udom,$oldkey,$newkey); |
|
my $dbname = 'nohist_othdomqueued'; |
if ($context eq 'othdombydc') { |
if ($context eq 'othdombydc') { |
my ($extent,$role,$uname,$udom) = split(/:/,$item); |
($extent,$role,$uname,$udom) = split(/:/,$item); |
my $oldkey = 'pending:'.$uname.':'.$extent.':'.$role; |
$oldkey = 'pending:'.$uname.':'.$extent.':'.$role; |
my $newkey = 'rejected:'.$uname.':'.$extent.':'.$role; |
$newkey = 'rejected:'.$uname.':'.$extent.':'.$role; |
my $dbname = 'nohist_othdomqueued'; |
} elsif ($context eq 'othdombyuser') { |
if (exists($requesthash{$oldkey})) { |
($extent,$role) = split(/:/,$item); |
if (ref($requesthash{$oldkey}) eq 'HASH') { |
$oldkey = 'pending:'.$extent.':'.$role; |
|
$newkey = 'rejected:'.$extent.':'.$role; |
|
$uname = $env{'user.name'}; |
|
$udom = $env{'user.domain'}; |
|
} |
|
if (exists($requesthash{$oldkey})) { |
|
if (ref($requesthash{$oldkey}) eq 'HASH') { |
|
my $statusres; |
|
my $id = $uname.':'.$udom.':'.$role; |
|
if (($role eq 'ca') || ($role eq 'aa')) { |
|
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
|
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'rejected'},$audom,$auname); |
|
} elsif ($extent =~ m{^/($match_domain)/\Q$role\E$}) { |
|
my $domain = $1; |
|
my $configuser = &Apache::lonnet::get_domainconfiguser($domain); |
|
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'rejected'},$domain,$configuser); |
|
} else { |
|
my ($crsdom,$crsnum,$csec) = ($extent =~ m{^/($match_domain)/($match_courseid)(?:|/([^/]+))$}); |
|
$id .= ':'.$csec; |
|
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'rejected'},$crsdom,$crsnum); |
|
} |
|
if ($statusres eq 'ok') { |
$requesthash{$newkey} = $requesthash{$oldkey}; |
$requesthash{$newkey} = $requesthash{$oldkey}; |
delete($requesthash{$oldkey}); |
delete($requesthash{$oldkey}); |
push(@toremove,$oldkey); |
push(@toremove,$oldkey); |
$requesthash{$newkey}->{'timestamp'} = $now; |
$requesthash{$newkey}->{'timestamp'} = $now; |
$requesthash{$newkey}->{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'}; |
$requesthash{$newkey}->{'adjudicator'} = $env{'user.name'}.':'.$env{'user.domain'}; |
my $statusres; |
$requestedby{$item} = $requesthash{$newkey}->{'requester'}; |
my $id = $uname.':'.$udom.':'.$role; |
push(@rejectedreqs,$item); |
if (($role eq 'ca') || ($role eq 'aa')) { |
} else { |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
push(@warn_rejects,$oldkey); |
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'rejected'},$audom,$auname); |
|
} elsif ($extent =~ m{^/($match_domain)/$}) { |
|
my $domain = $1; |
|
my $configuser = &Apache::lonnet::get_domainconfiguser($domain); |
|
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'rejected'},$domain,$configuser); |
|
} else { |
|
my ($crsdom,$crsnum,$csec) = ($extent =~ m{^/($match_domain)/($match_courseid)(?:|/([^/]+))$}); |
|
$id .= ':'.$csec; |
|
$statusres = &Apache::lonnet::put($dbname,{'status&'.$id => 'rejected'},$crsdom,$crsnum); |
|
} |
|
if ($statusres eq 'ok') { |
|
$requestedby{$item} = $requesthash{$newkey}->{'requester'}; |
|
push(@rejectedreqs,$item); |
|
} |
|
} |
} |
} |
} |
} |
} |
Line 1961 sub update_request_queue {
|
Line 2004 sub update_request_queue {
|
} |
} |
} |
} |
} |
} |
unless ($context eq 'othdombydc') { |
unless (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
@toremove = map {$_.'_approval'} (@toremove); |
@toremove = map {$_.'_approval'} (@toremove); |
} |
} |
my $delresult = &Apache::lonnet::del_dom($namespace,\@toremove,$cdom); |
if (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
if (($delresult ne 'ok') && ($context eq 'othdombydc')) { |
my $delresult; |
push(@warn_dels,@toremove); |
if ($context eq 'othdombyuser') { |
|
$delresult = &Apache::lonnet::del($namespace,\@toremove,$env{'user.domain'},$env{'user.name'}); |
|
} else { |
|
$delresult = &Apache::lonnet::del_dom($namespace,\@toremove,$cdom); |
|
} |
|
unless ($delresult eq 'ok') { |
|
push(@warn_dels,@toremove); |
|
} |
} |
} |
} |
} |
if (@changes) { |
if (@changes) { |
Line 1976 sub update_request_queue {
|
Line 2026 sub update_request_queue {
|
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
if ($context eq 'othdombydc') { |
if ($context eq 'othdombydc') { |
$delresult = &Apache::lonnet::put($namespace,\%requesthash,$cdom,$confname); |
$delresult = &Apache::lonnet::put($namespace,\%requesthash,$cdom,$confname); |
} |
} elsif ($context eq 'othdombyuser') { |
|
$delresult = &Apache::lonnet::put($namespace,\%requesthash,$env{'user.domain'},$env{'user.name'}); |
|
} |
} else { |
} else { |
$delresult = &Apache::lonnet::del_dom($namespace,\@changes,$cdom); |
$delresult = &Apache::lonnet::del_dom($namespace,\@changes,$cdom); |
} |
} |
Line 2066 sub update_request_queue {
|
Line 2118 sub update_request_queue {
|
$approvedlist,$rejectedlist); |
$approvedlist,$rejectedlist); |
} |
} |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
$chgmsg = "'Action was taken on the following role requests by [_1].',$namelink"; |
my @chgmsgs = ({ mt => 'Action was taken by [_1].', |
|
args => [$namelink] }); |
my (%approvals_by_requester,%rejections_by_requester,%for_requester); |
my (%approvals_by_requester,%rejections_by_requester,%for_requester); |
my $sender = $env{'user.name'}.':'.$env{'user.domain'}; |
my $sender = $env{'user.name'}.':'.$env{'user.domain'}; |
if (@completed) { |
if (@completed) { |
$output .= '<p>'.&mt('The following roles in other domain(s) were assigned for user(s) in this domain:').'<ul>'. |
my $msg; |
&get_othdombydc_results('approved',\@completed,\%approvals_by_requester,\%requestedby,\%for_requester). |
if ($context eq 'othdombydc') { |
|
$msg = &mt('The following roles in other domain(s) were assigned for user(s) in this domain:'); |
|
} elsif ($context eq 'othdombyuser') { |
|
$msg = &mt('The following roles in other domain(s) were assigned:'); |
|
} |
|
$output .= '<p>'.$msg.'<ul>'. |
|
&get_othdomby_results($context,'approved',\@completed,\%approvals_by_requester,\%requestedby,\%for_requester). |
'</ul></p>'; |
'</ul></p>'; |
} |
} |
if (@rejectedreqs) { |
if (@rejectedreqs) { |
$output .= '<p>'.&mt('The following role assignments in other domain(s) for user(s) in this domain were rejected:').'<ul>'. |
my $msg; |
&get_othdombydc_results('rejected',\@rejectedreqs,\%rejections_by_requester,\%requestedby,\%for_requester). |
if ($context eq 'othdombydc') { |
|
$msg = &mt('The following role assignments in other domain(s) for user(s) in this domain were rejected:'); |
|
} elsif ($context eq 'othdombyuser') { |
|
$msg = &mt('The following role assignments in other domain(s) were rejected:'); |
|
} |
|
$output .= '<p>'.$msg.'<ul>'. |
|
&get_othdomby_results($context,'rejected',\@rejectedreqs,\%rejections_by_requester,\%requestedby,\%for_requester). |
'</ul></p>'; |
'</ul></p>'; |
} |
} |
foreach my $key (sort(keys(%for_requester))) { |
foreach my $key (sort(keys(%for_requester))) { |
if (ref($approvals_by_requester{$key}) eq 'ARRAY') { |
if (ref($approvals_by_requester{$key}) eq 'ARRAY') { |
if (@{$approvals_by_requester{$key}} > 0) { |
if (@{$approvals_by_requester{$key}} > 0) { |
$approvedlist = join("\n\n",@{$approvals_by_requester{$key}}); |
if ($context eq 'othdombydc') { |
|
push(@chgmsgs,{ mt => '[_1]The following roles in other domain(s) were assigned:', |
|
args => ["\n"]}); |
|
} elsif ($context eq 'othdombyuser') { |
|
push(@chgmsgs,{ mt => '[_1]The following roles in other domain(s) were accepted:', |
|
args => ["\n"]}); |
|
} |
|
push(@chgmsgs,@{$approvals_by_requester{$key}}); |
|
$approvedlist = $key; |
} |
} |
} |
} |
if (ref($rejections_by_requester{$key}) eq 'ARRAY') { |
if (ref($rejections_by_requester{$key}) eq 'ARRAY') { |
if (@{$rejections_by_requester{$key}} > 0) { |
if (@{$rejections_by_requester{$key}} > 0) { |
$rejectedlist = join("\n\n",@{$rejections_by_requester{$key}}); |
if ($context eq 'othdombydc') { |
|
push(@chgmsgs,{ mt => '[_1]The following roles in other domain(s) were rejected:', |
|
args => ["\n"]}); |
|
} elsif ($context eq 'othdombyuser') { |
|
push(@chgmsgs,{ mt => '[_1]The following roles in other domain(s) were declined:', |
|
args => ["\n"]}); |
|
} |
|
push(@chgmsgs,@{$rejections_by_requester{$key}}); |
|
$rejectedlist = $key; |
} |
} |
} |
} |
if (($approvedlist ne '') || ($rejectedlist ne '')) { |
if (($approvedlist ne '') || ($rejectedlist ne '')) { |
&send_selfserve_notification($key,$chgmsg,'',$domdesc,$now, |
&send_selfserve_notification($key,\@chgmsgs,'',$domdesc,$now, |
$context,$sender,$approvedlist, |
$context,$sender,$approvedlist, |
$rejectedlist); |
$rejectedlist); |
} |
} |
Line 2138 sub update_request_queue {
|
Line 2219 sub update_request_queue {
|
} |
} |
} |
} |
} else { |
} else { |
if (($context eq 'requestauthor') || ($context eq 'requestusername') || ($context eq 'othdombydc')) { |
if (($context eq 'requestauthor') || ($context eq 'requestusername') || |
|
($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
push(@warn_dels,@changes); |
push(@warn_dels,@changes); |
} |
} |
} |
} |
Line 2314 sub update_request_queue {
|
Line 2396 sub update_request_queue {
|
$output .= '<li>'.$uname.'</li>'; |
$output .= '<li>'.$uname.'</li>'; |
} |
} |
$output .= '</ul></p>'; |
$output .= '</ul></p>'; |
} elsif ($context eq 'othdombydc') { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
|
my $msg; |
|
if ($context eq 'othdombydc') { |
|
$msg = &mt("For the following assignments of roles in other domain(s) for users from this domain, an error occurred when updating status in the pending queue"); |
|
} elsif ($context eq 'othdombyuser') { |
|
$msg = &mt("For the following assignments of roles in other domain(s), an error occurred when updating status in the pending queue"); |
|
} |
|
$output .= '<p>'.$msg.'<ul>'; |
|
if (@warn_approves) { |
|
$output .= &get_othdomby_results($context,'dequeue_error',\@warn_approves); |
|
} |
|
if (@warn_rejects) { |
|
$output .= &get_othdomby_results($context,'dequeue_error',\@warn_rejects); |
|
} |
|
$output .= '</ul></p>'; |
} else { |
} else { |
$output .= '<p>'.&mt("For the following course/community requests an error occurred when updating the requestor's own requests record:").'<ul>'; |
$output .= '<p>'.&mt("For the following course/community requests an error occurred when updating the requestor's own requests record:").'<ul>'; |
foreach my $cnum (@warn_approves,@warn_rejects) { |
foreach my $cnum (@warn_approves,@warn_rejects) { |
Line 2346 sub update_request_queue {
|
Line 2441 sub update_request_queue {
|
$output .= '<li>'.&unescape($escuname).'</li>'; |
$output .= '<li>'.&unescape($escuname).'</li>'; |
} |
} |
$output .= '</ul></p>'; |
$output .= '</ul></p>'; |
} elsif ($context eq 'othdombydc') { |
} elsif (($context eq 'othdombydc') || ($context eq 'othdombyuser')) { |
$output .= '<p>'. |
my $msg; |
&mt("For the following queued role assignments an error occurred when removing the item from the queue:"). |
if ($context eq 'othdombydc') { |
'<ul>'.&get_othdombydc_results('dequeue_error',\@warn_dels).'</ul>'. |
$msg = &mt("For the following queued role assignments an error occurred when removing the item from the queue:"); |
|
} elsif ($context eq 'othdombyuser') { |
|
$msg = &mt("For the following role assignments pending approval an error occurred when removing the item from the queue:"); |
|
} |
|
$output .= '<p>'.$msg. |
|
'<ul>'.&get_othdomby_results($context,'dequeue_error',\@warn_dels).'</ul>'. |
'</p>'; |
'</p>'; |
} else { |
} else { |
$output .= '<p>'.&mt("For the following course/community requests an error occurred when removing requests from the pending queue:").'<ul>'; |
$output .= '<p>'.&mt("For the following course/community requests an error occurred when removing requests from the pending queue:").'<ul>'; |
Line 2368 sub update_request_queue {
|
Line 2468 sub update_request_queue {
|
return $output; |
return $output; |
} |
} |
|
|
sub get_othdombydc_results { |
sub get_othdomby_results { |
my ($action,$items,$results,$requestedby,$for_requester) = @_; |
my ($context,$action,$items,$results,$requestedby,$for_requester) = @_; |
return unless (ref($items) eq 'ARRAY'); |
return unless (ref($items) eq 'ARRAY'); |
unless ($action eq 'dequeue_error') { |
unless ($action eq 'dequeue_error') { |
return unless ((ref($results) eq 'HASH') && (ref($requestedby) eq 'HASH') && |
return unless ((ref($results) eq 'HASH') && (ref($requestedby) eq 'HASH') && |
Line 2379 sub get_othdombydc_results {
|
Line 2479 sub get_othdombydc_results {
|
foreach my $item (@{$items}) { |
foreach my $item (@{$items}) { |
my ($extent,$role,$uname,$udom); |
my ($extent,$role,$uname,$udom); |
if ($action eq 'approved') { |
if ($action eq 'approved') { |
(my $num,$extent,$role,$uname,$udom) = split(/:/,$item); |
if ($context eq 'othdombydc') { |
|
(my $num,$extent,$role,$uname,$udom) = split(/:/,$item); |
|
} elsif ($context eq 'othdombyuser') { |
|
(my $num,$extent,$role) = split(/:/,$item); |
|
} |
} elsif ($action eq 'rejected') { |
} elsif ($action eq 'rejected') { |
($extent,$role,$uname,$udom) = split(/:/,$item); |
if ($context eq 'othdombydc') { |
|
($extent,$role,$uname,$udom) = split(/:/,$item); |
|
} elsif ($context eq 'othdombyuser') { |
|
($extent,$role) = split(/:/,$item); |
|
} |
} elsif ($action eq 'dequeue_error') { |
} elsif ($action eq 'dequeue_error') { |
(my $oldstatus,$uname,$extent,$role) = split(/:/,$item); |
if ($context eq 'othdombydc') { |
$udom = $env{'request.role.domain'}; |
if ($item =~ /^\d+:/) { |
|
(my $num,$extent,$role,$uname,$udom) = split(/:/,$item); |
|
} elsif ($item =~ /^pending:/) { |
|
(my $oldstatus,$uname,$extent,$role) = split(/:/,$item); |
|
$udom = $env{'request.role.domain'}; |
|
} else { |
|
($extent,$role,$uname,$udom) = split(/:/,$item); |
|
} |
|
} elsif ($context eq 'othdombyuser') { |
|
if ($item =~ /^\d+:/) { |
|
(my $num,$extent,$role) = split(/:/,$item); |
|
} elsif ($item =~ /^pending:/) { |
|
(my $oldstatus,$extent,$role) = split(/:/,$item); |
|
} else { |
|
($extent,$role) = split(/:/,$item); |
|
} |
|
} |
|
} |
|
if ($context eq 'othdombyuser') { |
|
$uname = $env{'user.name'}; |
|
$udom = $env{'user.domain'}; |
|
} |
|
my (@text,@msgs); |
|
if ($context eq 'othdombydc') { |
|
push(@text,&mt('User: [_1]',$uname)); |
|
push(@msgs,{ mt => '[_1]User: [_2]', |
|
args => ["\n",$uname]}); |
} |
} |
my @text = (&mt('User: [_1]',$uname)); |
|
if (($role eq 'ca') || ($role eq 'aa')) { |
if (($role eq 'ca') || ($role eq 'aa')) { |
my $plainrole = &Apache::lonnet::plaintext($role); |
my $plainrole = &Apache::lonnet::plaintext($role); |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
my ($audom,$auname) = ($extent =~ m{^/($match_domain)/($match_username)$}); |
my $title = &Apache::loncommon::plainname($auname,$audom); |
my $title = &Apache::loncommon::plainname($auname,$audom); |
|
my $domdesc = &Apache::lonnet::domain($audom); |
push(@text,(&mt('Role: [_1]',$plainrole), |
push(@text,(&mt('Role: [_1]',$plainrole), |
&mt('Domain: [_1]',&Apache::lonnet::domain($audom)), |
&mt('Domain: [_1]',$domdesc), |
&mt('Authoring Space belonging to: [_1]',$title))); |
&mt('Authoring Space belonging to: [_1]',$title))); |
|
push(@msgs,{ mt => 'Role: [_1]', |
|
args => [$plainrole], |
|
}, |
|
{ mt => 'Domain: [_1]', |
|
args => [$domdesc], |
|
}, |
|
{ mt => 'Authoring Space belonging to: [_1]', |
|
args => ["$title\n"], |
|
}); |
} elsif ($extent =~ m{^/($match_domain)/$}) { |
} elsif ($extent =~ m{^/($match_domain)/$}) { |
my $domain = $1; |
my $domain = $1; |
|
my $domdesc = &Apache::lonnet::domain($domain); |
my $plainrole = &Apache::lonnet::plaintext($role); |
my $plainrole = &Apache::lonnet::plaintext($role); |
if (&Apache::lonnet::domain($domain) ne '') { |
if ($domdesc ne '') { |
push(@text,(&mt('Role: [_1]',$plainrole), |
push(@text,(&mt('Role: [_1]',$plainrole), |
&mt('Domain: [_1]',&Apache::lonnet::domain($domain)))); |
&mt('Domain: [_1]',$domdesc))); |
|
push(@msgs,{ mt => 'Role: [_1]', |
|
args => [$plainrole], |
|
}, |
|
{ mt => 'Domain: [_1]', |
|
args => ["$domdesc\n"], |
|
}); |
} |
} |
} else { |
} else { |
my ($crsdom,$crsnum,$csec) = ($extent =~ m{^/($match_domain)/($match_courseid)(?:|/([^/]+)$)}); |
my ($crsdom,$crsnum,$csec) = ($extent =~ m{^/($match_domain)/($match_courseid)(?:|/([^/]+)$)}); |
if (($crsdom ne '') && ($crsnum ne '')) { |
if (($crsdom ne '') && ($crsnum ne '')) { |
my %info = &Apache::lonnet::coursedescription("$crsdom/$crsnum"); |
my %info = &Apache::lonnet::coursedescription("$crsdom/$crsnum"); |
my $plainrole = &Apache::lonnet::plaintext($role,$info{'type'}); |
my $plainrole = &Apache::lonnet::plaintext($role,$info{'type'}); |
|
my $domdesc = &Apache::lonnet::domain($crsdom); |
push(@text,(&mt('Role: [_1]',$plainrole), |
push(@text,(&mt('Role: [_1]',$plainrole), |
&mt('Domain: [_1]',&Apache::lonnet::domain($crsdom)), |
&mt('Domain: [_1]',$domdesc), |
&mt("$info{'type'}: [_1]",$info{'description'}))); |
&mt("$info{'type'}: [_1]",$info{'description'}))); |
|
push(@msgs,{ mt => 'Role: [_1]', |
|
args => [$plainrole], |
|
}, |
|
{ mt => 'Domain: [_1]', |
|
args => [$domdesc], |
|
}); |
if ($csec ne '') { |
if ($csec ne '') { |
push(@text,&mt('Section: [_1]',$csec)); |
push(@text,&mt('Section: [_1]',$csec)); |
|
push(@msgs,{ mt => "$info{'type'}: [_1]", |
|
args => [$info{'description'}], |
|
}, |
|
{ mt => 'Section: [_1]', |
|
args => ["$info{'description'}\n"], |
|
}); |
|
} else { |
|
push(@msgs,{ mt => "$info{'type'}: [_1]", |
|
args => ["$info{'description'}\n"], |
|
}); |
} |
} |
} |
} |
} |
} |
$output .= '<li><ul><li>'.join('</li><li>',@text).'</li></ul></li>'; |
$output .= '<li><ul><li>'.join('</li><li>',@text).'</li></ul></li>'; |
unless ($action eq 'dequeue_error') { |
unless ($action eq 'dequeue_error') { |
push(@{$results->{$requestedby->{$item}}},join("\n",@text)); |
push(@{$results->{$requestedby->{$item}}},@msgs); |
$for_requester->{$requestedby->{$item}} = 1; |
$for_requester->{$requestedby->{$item}} = 1; |
} |
} |
} |
} |
Line 2486 sub course_creation {
|
Line 2653 sub course_creation {
|
(ref($longroles) eq 'HASH')) { |
(ref($longroles) eq 'HASH')) { |
return ('error: Invalid request'); |
return ('error: Invalid request'); |
} |
} |
my ($result,$ownername,$ownerdom); |
my ($result,$ownername,$ownerdom,$autocoowner); |
my $crstype = $details->{'crstype'}; |
my $crstype = $details->{'crstype'}; |
my $coursedesc = $details->{'cdescr'}; |
my $coursedesc = $details->{'cdescr'}; |
my $accessstart = $details->{'accessstart'}; |
my $accessstart = $details->{'accessstart'}; |
my $accessend = $details->{'accessend'}; |
my $accessend = $details->{'accessend'}; |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses'],$dom); |
my %domconfig = &Apache::lonnet::get_dom('configuration',['requestcourses','autoenroll'],$dom); |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') { |
if (ref($domconfig{'requestcourses'}{'uniquecode'}) eq 'HASH') { |
if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) { |
if ($domconfig{'requestcourses'}{'uniquecode'}{$crstype}) { |
Line 2499 sub course_creation {
|
Line 2666 sub course_creation {
|
} |
} |
} |
} |
} |
} |
|
if (ref($domconfig{'autoenroll'}) eq 'HASH') { |
|
$autocoowner = $domconfig{'autoenroll'}{'co-owners'}; |
|
} |
if ($context eq 'domain') { |
if ($context eq 'domain') { |
$ownername = $details->{'owner'}; |
$ownername = $details->{'owner'}; |
$ownerdom = $details->{'domain'}; |
$ownerdom = $details->{'domain'}; |
Line 2528 sub course_creation {
|
Line 2698 sub course_creation {
|
$postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername, |
$postprocess = &Apache::lonnet::auto_crsreq_update($dom,$cnum,$crstype,$result,$ownername, |
$ownerdom,$fullname,$coursedesc,$code, |
$ownerdom,$fullname,$coursedesc,$code, |
$accessstart,$accessend,$customhash); |
$accessstart,$accessend,$customhash); |
|
if ($autocoowner) { |
|
my $instcode = $details->{'instcode'}; |
|
if (($instcode ne '') && (ref($reqdetails{'users'}) eq 'HASH')) { |
|
my @posscoowners; |
|
my $now = time; |
|
foreach my $person (keys(%{$reqdetails{'users'}})) { |
|
my ($uname,$udom) = split(/:/,$person); |
|
next if (($udom ne $dom) || (($uname eq $ownername) && ($udom eq $ownerdom))); |
|
if ((&Apache::lonnet::homeserver($uname,$udom,1) ne 'no_host') && |
|
(ref($reqdetails{'users'}{$person}) eq 'HASH')) { |
|
if ((grep(/^cc$/,keys(%{$reqdetails{'users'}{$person}}))) && |
|
(ref($reqdetails{'users'}{$person}{'cc'}) eq 'HASH')) { |
|
my $start = $reqdetails{'users'}{$person}{'cc'}{'start'}; |
|
my $end = $reqdetails{'users'}{$person}{'cc'}{'end'}; |
|
if ((($start eq '') || ($start <= $now)) && |
|
(($end eq '') || ($end >= $now))) { |
|
push(@posscoowners,$person); |
|
} |
|
} |
|
} |
|
} |
|
my @coowners; |
|
if (@posscoowners) { |
|
foreach my $user (@posscoowners) { |
|
my ($checkcc,$desc) = |
|
&Apache::lonnet::auto_validate_instcode($cnum,$dom,$instcode,$user); |
|
unless ($checkcc eq 'valid') { |
|
if (ref($reqdetails{'crosslists'}) eq 'HASH') { |
|
foreach my $key (keys(%{$reqdetails{'crosslists'}})) { |
|
if (ref($reqdetails{'crosslists'}{$key}) eq 'HASH') { |
|
my $inst_crosslist = $reqdetails{'crosslists'}{$key}{'inst'}; |
|
if ($inst_crosslist ne '') { |
|
$checkcc = |
|
&Apache::lonnet::auto_validate_inst_crosslist($cnum,$dom,$instcode, |
|
$inst_crosslist,$user); |
|
last if ($checkcc eq 'valid'); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($checkcc eq 'valid') { |
|
if (@coowners > 0) { |
|
unless (grep(/^\Q$user\E$/,@coowners)) { |
|
push(@coowners,$user); |
|
} |
|
} else { |
|
push(@coowners,$user); |
|
} |
|
} |
|
} |
|
} |
|
if (@coowners > 0) { |
|
my $chome = &Apache::lonnet::homeserver($cnum,$dom); |
|
unless ($chome eq 'no_host') { |
|
&Apache::lonnet::store_coowners($dom,$cnum,$chome,'',@coowners); |
|
} |
|
} |
|
} |
|
} |
} else { |
} else { |
$result = 'error: '.$cid; |
$result = 'error: '.$cid; |
} |
} |
Line 3124 sub postprocess_crsenv {
|
Line 3354 sub postprocess_crsenv {
|
my %needcrsidput = ( |
my %needcrsidput = ( |
'internal.selfenroll_types' => 1, |
'internal.selfenroll_types' => 1, |
'internal.selfenroll_start_date' => 1, |
'internal.selfenroll_start_date' => 1, |
'internal. selfenroll_end_date' => 1, |
'internal.selfenroll_end_date' => 1, |
); |
); |
my (@needupdate,%newcrsenv); |
my (@needupdate,%newcrsenv); |
foreach my $key (keys(%{$postprocessenv})) { |
foreach my $key (keys(%{$postprocessenv})) { |