version 1.320, 2005/04/07 06:56:23
|
version 1.327, 2005/04/16 15:33:14
|
Line 1588 END
|
Line 1588 END
|
my @allres=$navmap->retrieveResources(); |
my @allres=$navmap->retrieveResources(); |
foreach my $resource (@allres) { |
foreach my $resource (@allres) { |
if ($resource->hasDiscussion()) { |
if ($resource->hasDiscussion()) { |
my $ressymb; |
$haveDisc .= $resource->wrap_symb().':'; |
if ($resource->symb() =~ m-(___adm/\w+/\w+)/(\d+)/bulletinboard$-) { |
|
$ressymb = 'bulletin___'.$2.$1.'/'.$2.'/bulletinboard'; |
|
} else { |
|
$ressymb = $resource->symb(); |
|
} |
|
$haveDisc .= $ressymb.':'; |
|
$totdisc ++; |
$totdisc ++; |
} |
} |
} |
} |
Line 2118 sub generate_course_user_opt {
|
Line 2112 sub generate_course_user_opt {
|
|
|
my $uname=$env{'user.name'}; |
my $uname=$env{'user.name'}; |
my $udom=$env{'user.domain'}; |
my $udom=$env{'user.domain'}; |
my $uhome=$env{'user.home'}; |
|
my $cid=$env{'request.course.id'}; |
my $cid=$env{'request.course.id'}; |
my $chome=$env{'course.'.$cid.'.home'}; |
my $cdom=$env{'course.'.$cid.'.domain'}; |
my ($cdom,$cnum)=split(/\_/,$cid); |
my $cnum=$env{'course.'.$cid.'.num'}; |
|
|
my $userprefix=$uname.'_'.$udom.'_'; |
|
|
|
my %courserdatas; my %useropt; my %courseopt; my %userrdatas; |
|
unless ($uhome eq 'no_host') { |
|
# ------------------------------------------------- Get coursedata (if present) |
# ------------------------------------------------- Get coursedata (if present) |
unless ((time-$courserdatas{$cid.'.last_cache'})<240) { |
my $courseopt=&Apache::lonnet::get_courseresdata($cnum,$cdom); |
my $reply=&Apache::lonnet::reply('dump:'.$cdom.':'.$cnum. |
# Check for network failure |
':resourcedata',$chome); |
if (!ref($courseopt)) { |
# Check for network failure |
if ( $courseopt =~ /no.such.host/i || $courseopt =~ /con_lost/i) { |
if ( $reply =~ /no.such.host/i || $reply =~ /con_lost/i) { |
$self->{NETWORK_FAILURE} = 1; |
$self->{NETWORK_FAILURE} = 1; |
|
} elsif ($reply!~/^error\:/) { |
|
$courserdatas{$cid}=$reply; |
|
$courserdatas{$cid.'.last_cache'}=time; |
|
} |
|
} |
|
foreach (split(/\&/,$courserdatas{$cid})) { |
|
my ($name,$value)=split(/\=/,$_); |
|
$courseopt{$userprefix.&Apache::lonnet::unescape($name)}= |
|
&Apache::lonnet::unescape($value); |
|
} |
} |
|
undef($courseopt); |
|
} |
|
|
# --------------------------------------------------- Get userdata (if present) |
# --------------------------------------------------- Get userdata (if present) |
unless ((time-$userrdatas{$uname.'___'.$udom.'.last_cache'})<240) { |
|
my $reply=&Apache::lonnet::reply('dump:'.$udom.':'.$uname.':resourcedata',$uhome); |
my $useropt=&Apache::lonnet::get_userresdata($uname,$udom); |
if ($reply!~/^error\:/) { |
# Check for network failure |
$userrdatas{$uname.'___'.$udom}=$reply; |
if (!ref($useropt)) { |
$userrdatas{$uname.'___'.$udom.'.last_cache'}=time; |
if ( $useropt =~ /no.such.host/i || $useropt =~ /con_lost/i) { |
} |
$self->{NETWORK_FAILURE} = 1; |
# check to see if network failed |
|
elsif ( $reply=~/no.such.host/i || $reply=~/con.*lost/i ) |
|
{ |
|
$self->{NETWORK_FAILURE} = 1; |
|
} |
|
} |
|
foreach (split(/\&/,$userrdatas{$uname.'___'.$udom})) { |
|
my ($name,$value)=split(/\=/,$_); |
|
$useropt{$userprefix.&Apache::lonnet::unescape($name)}= |
|
&Apache::lonnet::unescape($value); |
|
} |
} |
$self->{COURSE_OPT} = \%courseopt; |
undef($useropt); |
$self->{USER_OPT} = \%useropt; |
|
} |
} |
|
|
|
$self->{COURSE_OPT} = $courseopt; |
|
$self->{USER_OPT} = $useropt; |
|
|
$self->{COURSE_USER_OPT_GENERATED} = 1; |
$self->{COURSE_USER_OPT_GENERATED} = 1; |
|
|
return; |
return; |
Line 2177 sub generate_email_discuss_status {
|
Line 2151 sub generate_email_discuss_status {
|
if ($self->{EMAIL_DISCUSS_GENERATED}) { return; } |
if ($self->{EMAIL_DISCUSS_GENERATED}) { return; } |
|
|
my $cid=$env{'request.course.id'}; |
my $cid=$env{'request.course.id'}; |
my ($cdom,$cnum)=split(/\_/,$cid); |
my $cdom=$env{'course.'.$cid.'.domain'}; |
|
my $cnum=$env{'course.'.$cid.'.num'}; |
|
|
my %emailstatus = &Apache::lonnet::dump('email_status'); |
my %emailstatus = &Apache::lonnet::dump('email_status'); |
my $logoutTime = $emailstatus{'logout'}; |
my $logoutTime = $emailstatus{'logout'}; |
Line 2197 sub generate_email_discuss_status {
|
Line 2172 sub generate_email_discuss_status {
|
|
|
my %feedback=(); |
my %feedback=(); |
my %error=(); |
my %error=(); |
my $keys = &Apache::lonnet::reply('keys:'. |
my @keys = &Apache::lonnet::getkeys('nohist_email',$env{'user.domain'}, |
$env{'user.domain'}.':'. |
$env{'user.name'}); |
$env{'user.name'}.':nohist_email', |
|
$env{'user.home'}); |
|
|
|
foreach my $msgid (split(/\&/, $keys)) { |
foreach my $msgid (@keys) { |
$msgid=&Apache::lonnet::unescape($msgid); |
|
if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) { |
if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) { |
my $plain= |
my $plain= |
&Apache::lonnet::unescape(&Apache::lonnet::unescape($msgid)); |
&Apache::lonnet::unescape(&Apache::lonnet::unescape($msgid)); |
Line 2281 sub getIterator {
|
Line 2253 sub getIterator {
|
sub hasDiscussion { |
sub hasDiscussion { |
my $self = shift; |
my $self = shift; |
my $symb = shift; |
my $symb = shift; |
|
|
$self->generate_email_discuss_status(); |
$self->generate_email_discuss_status(); |
|
|
if (!defined($self->{DISCUSSION_TIME})) { return 0; } |
if (!defined($self->{DISCUSSION_TIME})) { return 0; } |
|
|
#return defined($self->{DISCUSSION_TIME}->{$symb}); |
#return defined($self->{DISCUSSION_TIME}->{$symb}); |
|
|
# backward compatibility (bulletin boards used to be 'wrapped') |
# backward compatibility (bulletin boards used to be 'wrapped') |
my $ressymb = $symb; |
my $ressymb = $self->wrap_symb($symb); |
if ($ressymb =~ m|adm/(\w+)/(\w+)/(\d+)/bulletinboard$|) { |
|
unless ($ressymb =~ m|adm/wrapper/adm|) { |
|
$ressymb = 'bulletin___'.$3.'___adm/wrapper/adm/'.$1.'/'.$2.'/'.$3.'/bulletinboard'; |
|
} |
|
} |
|
|
|
if ( defined ( $self->{LAST_READ}->{$ressymb} ) ) { |
if ( defined ( $self->{LAST_READ}->{$ressymb} ) ) { |
return $self->{DISCUSSION_TIME}->{$ressymb} > $self->{LAST_READ}->{$ressymb}; |
return $self->{DISCUSSION_TIME}->{$ressymb} > $self->{LAST_READ}->{$ressymb}; |
} else { |
} else { |
Line 2304 sub hasDiscussion {
|
Line 2269 sub hasDiscussion {
|
} |
} |
} |
} |
|
|
|
sub wrap_symb { |
|
my $self = shift; |
|
my $symb = shift; |
|
if ($symb =~ m-___(adm/\w+/\w+/)(\d+)(/bulletinboard)$-) { |
|
unless ($symb =~ m|adm/wrapper/adm|) { |
|
$symb = 'bulletin___'.$2.'___adm/wrapper/'.$1.$2.$3; |
|
} |
|
} |
|
return $symb; |
|
} |
|
|
# Private method: Does the given resource (as a symb string) have |
# Private method: Does the given resource (as a symb string) have |
# current feedback? Returns the string in the feedback hash, which |
# current feedback? Returns the string in the feedback hash, which |
# will be false if it does not exist. |
# will be false if it does not exist. |
|
|
sub getFeedback { |
sub getFeedback { |
my $self = shift; |
my $self = shift; |
my $symb = shift; |
my $symb = shift; |
Line 2462 sub parmval_real {
|
Line 2439 sub parmval_real {
|
|
|
my $symbparm=$symb.'.'.$what; |
my $symbparm=$symb.'.'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $mapparm=$mapname.'___(all).'.$what; |
my $usercourseprefix=$uname.'_'.$udom.'_'.$cid; |
my $usercourseprefix=$cid; |
|
|
my $seclevel= $usercourseprefix.'.['.$csec.'].'.$what; |
my $seclevel= $usercourseprefix.'.['.$csec.'].'.$what; |
my $seclevelr=$usercourseprefix.'.['.$csec.'].'.$symbparm; |
my $seclevelr=$usercourseprefix.'.['.$csec.'].'.$symbparm; |
Line 3531 sub symb {
|
Line 3508 sub symb {
|
. '___' . $second . '___' . $symbSrc; |
. '___' . $second . '___' . $symbSrc; |
return &Apache::lonnet::symbclean($symb); |
return &Apache::lonnet::symbclean($symb); |
} |
} |
|
sub wrap_symb { |
|
my $self = shift; |
|
return $self->{NAV_MAP}->wrap_symb($self->symb()); |
|
} |
sub title { |
sub title { |
my $self=shift; |
my $self=shift; |
if ($self->{ID} eq '0.0') { |
if ($self->{ID} eq '0.0') { |