--- loncom/auth/lonroles.pm 2011/02/24 23:29:10 1.260 +++ loncom/auth/lonroles.pm 2012/08/15 16:56:52 1.273 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # User Roles Screen # -# $Id: lonroles.pm,v 1.260 2011/02/24 23:29:10 raeburn Exp $ +# $Id: lonroles.pm,v 1.273 2012/08/15 16:56:52 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -221,10 +221,17 @@ sub handler { } else { $checkingtxt = &mt('Checking for new roles ...'); } - $updateresult = '
'.$do_update.'
'); + if ($do_update && $requestauthor) { + $r->print(''.$do_update.'
'); + } elsif ($requestauthor) { + $r->print(''.$requestauthor.'
'); + } if ($countactive > 0) { $r->print(&Apache::loncoursequeueadmin::queued_selfenrollment()); my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description'); @@ -955,7 +1029,12 @@ ENDHEADER $r->print(''
@@ -1614,19 +1693,17 @@ sub check_forcc {
} else {
$ccrole = 'cc';
}
- if ($cdom ne '' && $cnum ne '') {
- if (&Apache::lonnet::is_course($cdom,$cnum)) {
- my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum;
- if (defined($env{$envkey})) {
- $is_cc = 1;
- my ($tstart,$tend)=split(/\./,$env{$envkey});
- my $limit = $update;
- if ($env{'request.role'} eq $ccrole.'./'.$cdom.'/'.$cnum) {
- $limit = $then;
- }
- if ($tstart && $tstart>$refresh) { $is_cc = 0; }
- if ($tend && $tend <$limit) { $is_cc = 0; }
+ if (&Apache::lonnet::is_course($cdom,$cnum)) {
+ my $envkey = 'user.role.'.$ccrole.'./'.$cdom.'/'.$cnum;
+ if (defined($env{$envkey})) {
+ $is_cc = 1;
+ my ($tstart,$tend)=split(/\./,$env{$envkey});
+ my $limit = $update;
+ if ($env{'request.role'} eq $ccrole.'./'.$cdom.'/'.$cnum) {
+ $limit = $then;
}
+ if ($tstart && $tstart>$refresh) { $is_cc = 0; }
+ if ($tend && $tend <$limit) { $is_cc = 0; }
}
}
return $is_cc;
@@ -1684,43 +1761,6 @@ sub check_release_required {
return ($switchserver,$warning);
}
-sub update_content_constraints {
- my ($cdom,$cnum,$chome,$cid) = @_;
- my %curr_reqd_hash = &Apache::lonnet::userenvironment($cdom,$cnum,'internal.releaserequired');
- my ($reqdmajor,$reqdminor) = split(/\./,$curr_reqd_hash{'internal.releaserequired'});
- my %checkresponsetypes;
- foreach my $key (keys(%Apache::lonnet::needsrelease)) {
- my ($item,$name,$value) = split(/:/,$key);
- if ($item eq 'resourcetag') {
- if ($name eq 'responsetype') {
- $checkresponsetypes{$value} = $Apache::lonnet::needsrelease{$key}
- }
- }
- }
- my $navmap = Apache::lonnavmaps::navmap->new();
- if (defined($navmap)) {
- my %allresponses;
- foreach my $res ($navmap->retrieveResources(undef,sub { $_[0]->is_problem() },1,0)) {
- my %responses = $res->responseTypes();
- foreach my $key (keys(%responses)) {
- next unless(exists($checkresponsetypes{$key}));
- $allresponses{$key} += $responses{$key};
- }
- }
- foreach my $key (keys(%allresponses)) {
- my ($major,$minor) = split(/\./,$checkresponsetypes{$key});
- if (($major > $reqdmajor) || ($major == $reqdmajor && $minor > $reqdminor)) {
- ($reqdmajor,$reqdminor) = ($major,$minor);
- }
- }
- undef($navmap);
- }
- unless (($reqdmajor eq '') && ($reqdminor eq '')) {
- &Apache::lonnet::update_released_required($reqdmajor.'.'.$reqdminor,$cdom,$cnum,$chome,$cid);
- }
- return;
-}
-
sub courselink {
my ($dcdom,$rowtype) = @_;
my $courseform=&Apache::loncommon::selectcourse_link
@@ -1801,7 +1841,7 @@ sub display_cc_role {
my %newhash=&Apache::lonnet::coursedescription($tcourseid);
if (%newhash) {
$twhere=$newhash{'description'}.
- ' '.
+ ' '.
&Apache::loncommon::syllabuswrapper(&mt('Syllabus'),$trest,$tdom).
'';
$ttype = $newhash{'type'};
@@ -1872,7 +1912,7 @@ sub update_session_roles {
['active','future','previous'],
undef,undef,1);
my ($msg,@newsec,$oldsec,$currrole_expired,@changed_roles,
- %changed_groups,%dbroles, %deletedroles,%allroles,%allgroups,
+ %changed_groups,%dbroles,%deletedroles,%allroles,%allgroups,
%userroles,%checkedgroup,%crprivs,$hasgroups,%rolechange,
%groupchange,%newrole,%newgroup,%customprivchg,%groups_roles,
@rolecodes);
@@ -1922,7 +1962,7 @@ sub update_session_roles {
}
if ($env{$envkey} eq '') {
my $status_in_db =
- &curr_role_status($tstart,$tend,$refresh,$now);
+ &curr_role_status($tstart,$tend,$now,$now);
&gather_roleprivs(\%allroles,\%allgroups,\%userroles,$where,$role,$tstart,$tend,$status_in_db);
if (($role eq 'st') && ($env{'request.role'} =~ m{^\Q$role\E\.\Q/$udom/$uname\E})) {
if ($status_in_db eq 'active') {
@@ -1966,7 +2006,7 @@ sub update_session_roles {
my $status_in_env =
&curr_role_status($currstart,$currend,$refresh,$update);
my $status_in_db =
- &curr_role_status($tstart,$tend,$refresh,$now);
+ &curr_role_status($tstart,$tend,$now,$now);
if ($status_in_env ne $status_in_db) {
if ($status_in_env eq 'active') {
if ($role eq 'st') {
@@ -2109,7 +2149,9 @@ sub update_session_roles {
foreach my $priv (@privs) {
my ($blank,@prv) = split(/:/,$priv);
@prv = map { $_ .= (/\&\w+$/ ? '':'&F') } @prv;
- $priv = ':'.join(':',sort(@prv));
+ if (@prv) {
+ $priv = ':'.join(':',sort(@prv));
+ }
$crprivs{$rest}{$scopes[$i]} = $priv;
$i++;
}
@@ -2213,21 +2255,30 @@ sub update_session_roles {
$msg .= '
'.&mt('However you can continue to use this role until you logout, click the "Re-Select" button, or your session has been idle for more than 24 hours.').'';
}
if (!@changed_roles || !(keys(%changed_groups))) {
- $msg .= '';
+ my ($rolesmsg,$groupsmsg);
if (!@changed_roles) {
- $msg .= '
';
if (!@changed_roles && !(keys(%changed_groups))) {
+ if (($msg ne '') || ($groupsmsg ne '')) {
+ $msg .= '';
+ if ($rolesmsg) {
+ $msg .= '
';
+ } else {
+ $msg = ' '.$rolesmsg.'
';
+ }
return $msg;
}
}
@@ -2280,7 +2331,7 @@ sub update_session_roles {
}
if (keys(%deletedroles) > 0) {
$changemsg .= '';
foreach my $item (sort(keys(%deletedroles))) {
$changemsg .= '