--- loncom/interface/lonrss.pm 2019/08/14 16:06:42 1.53.2.4 +++ loncom/interface/lonrss.pm 2021/12/14 03:15:12 1.61 @@ -1,7 +1,7 @@ # The LearningOnline Network # RSS Feeder # -# $Id: lonrss.pm,v 1.53.2.4 2019/08/14 16:06:42 raeburn Exp $ +# $Id: lonrss.pm,v 1.61 2021/12/14 03:15:12 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -244,7 +244,7 @@ sub add_blog_entry_link { } sub blocking_blogdisplay { - my ($uname,$udom,$html,$filterfeedname) = @_; + my ($uname,$udom,$html,$filterfeedname,$clientip) = @_; my $user = &Apache::loncommon::plainname($uname,$udom); if ($html) { $user = &Apache::loncommon::aboutmewrapper($user,$uname,$udom); @@ -253,23 +253,29 @@ sub blocking_blogdisplay { } my %setters; my ($blocked,$output,$blockcause); - my ($startblock,$endblock) = - &Apache::loncommon::blockcheck(\%setters,'blogs'); + my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = + &Apache::loncommon::blockcheck(\%setters,'blogs',$clientip); if ($startblock && $endblock) { $blockcause = 'user'; + } elsif ($by_ip) { + $blockcause = 'ip'; } else { if (($uname ne $env{'user.name'}) || ($udom ne $env{'user.domain'})) { ($startblock,$endblock) = - &Apache::loncommon::blockcheck(\%setters,'blogs', + &Apache::loncommon::blockcheck(\%setters,'blogs',$clientip, $uname,$udom); $blockcause = 'blogowner'; } } - if ($startblock && $endblock) { + if (($startblock && $endblock) || ($by_ip)) { $blocked = 1; - my $showstart = &Apache::lonlocal::locallocaltime($startblock); - my $showend = &Apache::lonlocal::locallocaltime($endblock); - $output = &mt('Blogs belonging to [_1] are unavailable from [_2] to [_3].',$user,$showstart,$showend); + if ($startblock && $endblock) { + my $showstart = &Apache::lonlocal::locallocaltime($startblock); + my $showend = &Apache::lonlocal::locallocaltime($endblock); + $output = &mt('Blogs belonging to [_1] are unavailable from [_2] to [_3].',$user,$showstart,$showend); + } else { + $output = &mt('Blogs are unavailable from your current IP address: [_1].',$clientip); + } if ($html) {$output.='
';} if ($blockcause eq 'user') { $output .= &mt('This is because you are a student in one or more courses in which communication is being blocked.'); @@ -277,9 +283,15 @@ sub blocking_blogdisplay { #$output .= '
'. #&Apache::loncommon::build_block_table($startblock, # $endblock,\%setters); - my ($blocked, $blocktext) = Apache::loncommon::blocking_status('blogs'); + my ($blocked, $blocktext) = Apache::loncommon::blocking_status('blogs',$clientip); $output .= '

'.$blocktext; } + } elsif ($blockcause eq 'ip') { + my $showdom = &Apache::lonnet::domain($blockdom); + if ($showdom eq '') { + $showdom = $blockdom; + } + $output .= &mt('This restriction was set by an administrator in the [_1] LON-CAPA domain',$showdom); } else { $output .= &mt('This is because the blog owner is a student in one or more courses in which communication is being blocked.'); } @@ -325,7 +337,8 @@ sub handler { my ($displayfeedname,$displayoption)=&displayfeedname($filename,$uname,$udom); my ($blocked,$blocktext,$disabled,$disabletext); if (!&Apache::lonnet::is_course($udom,$uname)) { - ($blocked,$blocktext) = &blocking_blogdisplay($uname,$udom,$html,$filterfeedname); + my $clientip = &Apache::lonnet::get_requestor_ip($r); + ($blocked,$blocktext) = &blocking_blogdisplay($uname,$udom,$html,$filterfeedname,$clientip); if (&Apache::lonnet::usertools_access($uname,$udom,'blog')) { $disabled = 0; } else {