version 1.471, 2006/11/20 21:00:47
|
version 1.474, 2006/11/29 07:46:39
|
Line 2792 sub findallcourses {
|
Line 2792 sub findallcourses {
|
my %courses; |
my %courses; |
my $now=time; |
my $now=time; |
foreach my $key (keys(%env)) { |
foreach my $key (keys(%env)) { |
if ( $key=~m{^user\.role\.(\w+)\./(\w+)/(\w+)} ) { |
if ( $key=~m{^user\.role\.(\w+)\./(\w+)/(\w+)/?(\w*)$} || |
my ($role,$domain,$id) = ($1,$2,$3); |
$key=~m{^user\.role\.(cr/\w+/\w+/\w+)\./(\w+)/(\w+)}) { |
|
my ($role,$domain,$id,$sec) = ($1,$2,$3,$4); |
next if ($role eq 'ca' || $role eq 'aa'); |
next if ($role eq 'ca' || $role eq 'aa'); |
next if (%roles && !exists($roles{$role})); |
next if (%roles && !exists($roles{$role})); |
my ($starttime,$endtime)=split(/\./,$env{$key}); |
my ($starttime,$endtime)=split(/\./,$env{$key}); |
Line 2804 sub findallcourses {
|
Line 2805 sub findallcourses {
|
if ($endtime) { |
if ($endtime) { |
if ($now>$endtime) { $active=0; } |
if ($now>$endtime) { $active=0; } |
} |
} |
if ($active) { $courses{$domain.'_'.$id}=1; } |
if ($active) { |
|
if ($sec eq '') { |
|
$sec = 'none'; |
|
} |
|
$courses{$domain.'_'.$id}{$sec} = 1; |
|
} |
} |
} |
} |
} |
return keys(%courses); |
return %courses; |
} |
} |
|
|
############################################### |
############################################### |
|
|
|
sub blockcheck { |
|
my ($setters,$activity) = @_; |
|
# Retrieve active student roles and active course coordinator/instructor roles |
|
|
|
my %live_courses = &findallcourses(); |
|
|
|
# Retrieve blocking times and identity of blocker for active courses |
|
# unless user has 'evb' privilege. |
|
|
|
my $startblock = 0; |
|
my $endblock = 0; |
|
|
|
foreach my $course (keys(%live_courses)) { |
|
my $cdom = $env{'course.'.$course.'.domain'}; |
|
my $cnum = $env{'course.'.$course.'.num'}; |
|
my $noblock = 0; |
|
foreach my $sec (keys(%{$live_courses{$course}})) { |
|
my $role = 'cm./'.$cdom.'/'.$cnum; |
|
if ($sec ne 'none') { |
|
$role .= '/'.$sec; |
|
} |
|
if (&Apache::lonnet::allowed('evb',undef,undef,$role)) { |
|
$noblock = 1; |
|
last; |
|
} |
|
} |
|
# if they have the evb priv and are currently not playing student |
|
next if (($noblock) && |
|
($env{'request.role'} !~ m{^st\./$cdom/$cnum})); |
|
|
|
$setters->{$course} = {}; |
|
$setters->{$course}{'staff'} = []; |
|
$setters->{$course}{'times'} = []; |
|
my %records = &Apache::lonnet::dump('comm_block',$cdom,$cnum); |
|
foreach my $record (keys(%records)) { |
|
my ($start,$end) = ($record =~ m/^(\d+)____(\d+)$/); |
|
if ($start <= time && $end >= time) { |
|
my ($staff_name,$staff_dom,$title,$blocks) = |
|
&parse_block_record($records{$record}); |
|
if ($blocks->{$activity} eq 'on') { |
|
push(@{$$setters{$course}{'staff'}}, [$staff_name,$staff_dom]); push(@{$$setters{$course}{'times'}}, [$start,$end]); |
|
if ( ($startblock == 0) || ($startblock > $1) ) { |
|
$startblock = $1; |
|
} |
|
if ( ($endblock == 0) || ($endblock < $2) ) { |
|
$endblock = $2; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return ($startblock,$endblock); |
|
} |
|
|
|
sub parse_block_record { |
|
my ($record) = @_; |
|
my ($setuname,$setudom,$title,$blocks); |
|
if (ref($record) eq 'HASH') { |
|
($setuname,$setudom) = split(/:/,$record->{'setter'}); |
|
$title = &unescape($record->{'event'}); |
|
$blocks = $record->{'blocks'}; |
|
|
|
} else { |
|
my @data = split(/:/,$record,3); |
|
if (scalar(@data) eq 2) { |
|
$title = $data[1]; |
|
($setuname,$setudom) = split(/@/,$data[0]); |
|
} else { |
|
($setuname,$setudom,$title) = @data; |
|
} |
|
$blocks = { 'com' => 'on' }; |
|
} |
|
return ($setuname,$setudom,$title,$blocks); |
|
} |
|
|
|
sub build_block_table { |
|
my ($startblock,$endblock,$setters) = @_; |
|
my %lt = &Apache::lonlocal::texthash( |
|
'cacb' => 'Currently active communication blocks', |
|
'cour' => 'Course', |
|
'dura' => 'Duration', |
|
'blse' => 'Block set by' |
|
); |
|
my $output; |
|
$output = '<br /><br />'.$lt{'cacb'}.':<br /><br />'; |
|
$output .= &start_data_table(); |
|
$output .= ' |
|
<tr> |
|
<th>'.$lt{'cour'}.'</th> |
|
<th>'.$lt{'dura'}.'</th> |
|
<th>'.$lt{'blse'}.'</th> |
|
</tr> |
|
'; |
|
foreach my $course (keys(%{$setters})) { |
|
my %courseinfo=&Apache::lonnet::coursedescription($course); |
|
for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { |
|
my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; |
|
my $fullname = &Apache::loncommon::plainname($uname,$udom); |
|
my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; |
|
$openblock = &Apache::lonlocal::locallocaltime($openblock); |
|
$closeblock= &Apache::lonlocal::locallocaltime($closeblock); |
|
$output .= &Apache::loncommon::start_data_table_row(). |
|
'<td>'.$courseinfo{'description'}.'</td>'. |
|
'<td>'.$openblock.' to '.$closeblock.'</td>'. |
|
'<td>'.$fullname.' ('.$uname.':'.$udom. |
|
')</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
$output .= &end_data_table(); |
|
} |
|
|
############################################### |
############################################### |
|
|
=pod |
=pod |
Line 3514 table.LC_whatsnew tr.LC_odd_row td {
|
Line 3633 table.LC_whatsnew tr.LC_odd_row td {
|
background-color: #EEE; |
background-color: #EEE; |
} |
} |
|
|
|
table.LC_createuser { |
|
} |
|
|
|
table.LC_createuser tr.LC_section_row td { |
|
font-size: smaller; |
|
} |
|
|
|
table.LC_createuser tr.LC_info_row td { |
|
background-color: #CCC; |
|
font-weight: bold; |
|
text-align: center; |
|
} |
|
|
table.LC_calendar { |
table.LC_calendar { |
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: collapse; |
border-collapse: collapse; |
Line 4612 sub get_user_info {
|
Line 4744 sub get_user_info {
|
return; |
return; |
} |
} |
|
|
|
############################################### |
|
|
|
=pod |
|
|
|
=item * &get_user_quota() |
|
|
|
Retrieves quota assigned for storage of portfolio files for a user |
|
|
|
Incoming parameters: |
|
1. user's username |
|
2. user's domain |
|
|
|
Returns: |
|
1. Disk quota (in Mb) assigned to student. |
|
|
|
If a value has been stored in the user's environment, |
|
it will return that, otherwise it returns the default |
|
for users in the domain. |
|
|
|
=cut |
|
|
|
############################################### |
|
|
|
|
|
sub get_user_quota { |
|
my ($uname,$udom) = @_; |
|
my $quota; |
|
if (!defined($udom)) { |
|
$udom = $env{'user.domain'}; |
|
} |
|
if (!defined($uname)) { |
|
$uname = $env{'user.name'}; |
|
} |
|
if (($udom eq '' || $uname eq '') || |
|
($udom eq 'public') && ($uname eq 'public')) { |
|
$quota = 0; |
|
} else { |
|
if ($udom eq $env{'user.domain'} && $uname eq $env{'user.name'}) { |
|
$quota = $env{'environment.portfolioquota'}; |
|
} else { |
|
my %userenv = &Apache::lonnet::dump('environment',$udom,$uname); |
|
my ($tmp) = keys(%userenv); |
|
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
|
$quota = $userenv{'portfolioquota'}; |
|
} else { |
|
undef(%userenv); |
|
} |
|
} |
|
if ($quota eq '') { |
|
$quota = &default_quota($udom); |
|
} |
|
} |
|
return $quota; |
|
} |
|
|
|
############################################### |
|
|
|
=pod |
|
|
|
=item * &default_quota() |
|
|
|
Retrieves default quota assigned for storage of user portfolio files |
|
|
|
Incoming parameters: |
|
1. domain |
|
|
|
Returns: |
|
1. Default disk quota (in Mb) for user portfolios in the domain. |
|
|
|
If a value has been stored in the domain's configuration db, |
|
it will return that, otherwise it returns 20 (for backwards |
|
compatibility with domains which have not set up a configuration |
|
db file; the original statically defined portfolio quota was 20 Mb). |
|
|
|
=cut |
|
|
|
############################################### |
|
|
|
|
|
sub default_quota { |
|
my ($udom) = @_; |
|
my %defaults = &Apache::lonnet::get_dom('configuration', |
|
['portfolioquota'],$udom); |
|
if ($defaults{'portfolioquota'} ne '') { |
|
return $defaults{'portfolioquota'}; |
|
} else { |
|
return '20'; |
|
} |
|
} |
|
|
sub get_secgrprole_info { |
sub get_secgrprole_info { |
my ($cdom,$cnum,$needroles,$type) = @_; |
my ($cdom,$cnum,$needroles,$type) = @_; |
my %sections_count = &get_sections($cdom,$cnum); |
my %sections_count = &get_sections($cdom,$cnum); |