--- loncom/interface/lonchatfetch.pm 2010/05/03 16:41:51 1.37 +++ loncom/interface/lonchatfetch.pm 2021/11/30 15:55:37 1.40 @@ -1,7 +1,7 @@ # The LearningOnline Network # Chat Fetching # -# $Id: lonchatfetch.pm,v 1.37 2010/05/03 16:41:51 www Exp $ +# $Id: lonchatfetch.pm,v 1.40 2021/11/30 15:55:37 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -63,7 +63,7 @@ sub handler { ''.&unescape($group_info{description}). '
'; } - } elsif (! &Apache::lonnet::allowed('pch',$env{'request.course.id'}. + } elsif (! &Apache::lonnet::allowed('plc',$env{'request.course.id'}. ($env{'request.course.sec'}?'/'.$env{'request.course.sec'}:'')) ) { return HTTP_NOT_ACCEPTABLE; @@ -177,7 +177,8 @@ sub handler { $refresh_cmd .= "&group=$group"; } my $headarg; - my ($blocked,$blocktext) = blockstatus(); + my $clientip = &Apache::lonnet::get_requestor_ip($r); + my ($blocked,$blocktext) = &blockstatus($clientip); if ($blocked) { $newstuff = $blocktext; $headarg = {'only_body' => 1,}; @@ -222,9 +223,11 @@ sub get_seeid_status { } sub blockstatus { + my ($clientip) = @_; my ($blocked,$output); my %setters; - my ($startblock,$endblock) = &Apache::loncommon::blockcheck(\%setters,'chat'); + my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = + &Apache::loncommon::blockcheck(\%setters,'chat',$clientip); if ($startblock && $endblock) { $blocked = 1; my $endblocktime = &Apache::lonlocal::locallocaltime($endblock); @@ -237,9 +240,21 @@ sub blockstatus { my ($openblock,$closeblock) = @{$setters{$course}{times}[$i]}; $openblock = &Apache::lonlocal::locallocaltime($openblock); $closeblock= &Apache::lonlocal::locallocaltime($closeblock); - $output .= &mt('Block for [_1] starts: [_2], ends [_3], set by: [_4]
',$courseinfo{'description'},$openblock,$closeblock,$fullname); + $output .= &mt('Block for [_1] starts: [_2], ends [_3], set by: [_4]',$courseinfo{'description'},$openblock,$closeblock,$fullname).'
'; } } + } elsif ($by_ip) { + $blocked = 1; + my $showdom = &Apache::lonnet::domain($blockdom); + if ($showdom eq '') { + $showdom = $blockdom; + } + $output = &mt('Chat Room is unavailable from your current IP address: [_1], ' + .'because communication is blocked for certain IP address(es).' + ,$clientip). + '
'. + &mt('This restriction was set by an administrator in the [_1] LON-CAPA domain.' + ,$showdom); } return ($blocked,$output); }