Diff for /loncom/interface/lonblockingstatus.pm between versions 1.6 and 1.14.2.2.2.2

version 1.6, 2009/09/25 13:51:58 version 1.14.2.2.2.2, 2020/09/29 20:17:30
Line 33  use Apache::Constants qw(:common); Line 33  use Apache::Constants qw(:common);
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
   use LONCAPA qw(:DEFAULT :match);
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
     Apache::loncommon::no_cache($r);      &Apache::loncommon::no_cache($r);
     Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
   
     $r->send_http_header;      $r->send_http_header;
     return OK if $r->header_only;      return OK if $r->header_only;
   
     $r->print( Apache::loncommon::start_page(      my (%activities,$activity,$origurl,$origsymb);
                   'Communication Blocking Status Information',      map { $activities{$_} = 1; } ('boards','chat','com','blogs','groups','port','printout','docs','grades','passwd','search');
                   undef, {'only_body' => 1}));  
   
     $r->print(blockpage());  
       
     $r->print(Apache::loncommon::end_page());  
   
     return OK;      # determine what kind of blocking we want details for
 }      &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity','url','symb']);
       $activity = $env{'form.activity'};
   
       my $title = 'Communication Blocking Status Information';
   
 sub blockpage {      if (($activity eq 'docs') || ($activity eq 'printout') ||
           ($activity eq 'grades') || ($activity eq 'passwd') ||
           ($activity eq 'search')) {
           $title = 'Blocking Status Information';
           if ($activity eq 'docs') {
               $origurl = $env{'form.url'};
               $origsymb = $env{'form.symb'};
           }
       }
       $r->print(&Apache::loncommon::start_page($title,undef,
                                               {'only_body' => 1}));
   
     # determine what kind of blocking we want details for      if (($activity eq '') || (!$activities{$activity})) {
     Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['activity']);          $r->print('<p class="LC_error">'.&mt('Error: unknown activity type blocked').'</p>');
     my $activity = $env{'form.activity'};      } elsif (($activity eq 'docs') && ($origurl eq '') && ($origsymb eq '')) {
           $r->print('<p class="LC_error">'.&mt('Error: could not determine what content was blocked from access').'</p>');
       } else {
           $r->print(&blockpage($activity,$origurl,$origsymb));
       }
   
     if ($activity !~ /^[a-z]+$/) { return 'Error'; }      $r->print(&Apache::loncommon::end_page());
   
       return OK;
   }
   
   sub blockpage {
       my ($activity,$origurl,$origsymb) = @_;
   
     # in case of a portfolio block we need to determine the owner of the files      # in case of a portfolio block we need to determine the owner of the files
     # we're trying to look at. This information is passed via query string.      # we're trying to look at. This information is passed via query string.
     my ($uname, $udom);      my ($uname, $udom);
   
     if ($activity eq 'port') {      if (($activity eq 'port') ||
         Apache::loncommon::get_unprocessed_cgi(          (($activity eq 'passwd') && ($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public'))) {
           &Apache::loncommon::get_unprocessed_cgi(
             $ENV{'QUERY_STRING'}, ['udom', 'uname'] );              $ENV{'QUERY_STRING'}, ['udom', 'uname'] );
   
         ($uname, $udom) = ($env{'form.uname'}, $env{'form.udom'});          ($uname, $udom) = ($env{'form.uname'}, $env{'form.udom'});
         #TODO sanitize input: $uname, $udom          if (($uname !~ /^$match_username$/) || ($udom !~ /^$match_domain$/)) {
               if ($activity eq 'port') {
                   return '<span class="LC_error">'.
                          &mt('Information about the owner of the portfolio files you were trying to view was missing or invalid.').
                          '</span><br />'.
                          &mt('Without valid owner information, the reason why access is blocked can not be determined');
               } else {
                   return '<span class="LC_error">'.
                          &mt('Information about the username and/or domain for which you were trying to reset a password was missing or invalid.').
                          '</span><br />'.
                          &mt('Without valid information, the reason why access is blocked can not be determined');
               }
           }
     }      }
   
   
     # retrieve start/end of possible active blocking      # retrieve start/end of possible active blocking
     my %setters;      my (%setters,$startblock,$endblock,$triggerblock);
     my ($startblock, $endblock) = Apache::loncommon::blockcheck(  
                                         \%setters, $activity, $uname, $udom);      if ($activity eq 'docs') {
           my ($cdom,$cnum);
           if ($env{'request.course.id'}) {
               $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
               $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           }
           my $cancheck;
           if (($cdom ne '') && ($cnum ne '')) {
               if ($origsymb =~ m{^uploaded/($match_domain)/($match_courseid)/}) {
                   my ($crsdom,$crsnum) = ($1,$2);
                   if (($cdom eq $crsdom) && ($cnum eq $crsnum)) {
                       $cancheck = 1;
                   }
               } else {
                   $cancheck = 1;
               }
           }
           if ($cancheck) {
               ($startblock,$endblock,$triggerblock) =
                   &Apache::loncommon::blockcheck(\%setters,$activity,$cnum,$cdom,$origurl,1,$origsymb,'blockingstatus');
           } else {
               return '<p class="LC_info">'.&mt('Could not determine why access is blocked.').'</p>';
           }
       } else {
           ($startblock,$endblock,$triggerblock) =
               &Apache::loncommon::blockcheck(\%setters,$activity,$uname,$udom,$origurl,undef,$origsymb,'blockingstatus');
       }
   
     # nothing to do if there's no active blocking      # nothing to do if there's no active blocking
     unless ($startblock && $endblock) { return ''; }      unless ($startblock && $endblock) {
           if ($activity eq 'docs') {
               return '<p class="LC_info">'.&mt('Content no longer blocked from access').'</p>';
           }
           return '<p class="LC_info">'.&mt('Access no longer blocked for this activity').'</p>';
       }
   
     # lookup $activity -> description      # lookup $activity -> description
                    #possible activity          #corresponding description                     #possible activity          #corresponding description
     my $description =       my %descs = (
                    $activity eq 'boards'     ? 'Discussion posts in this course'                     boards     => 'Discussion posts in this course',
                  : $activity eq 'chat'       ? 'Chat'                     chat       => 'Chat Room',
                  : $activity eq 'msgdisplay' ? 'This message'                     com        => 'This message',
                  : $activity eq 'blogs'      ? 'Blogs'                     blogs      => 'Blogs',
                  : $activity eq 'groups'     ? 'Groups in this course'                     groups     => 'Groups in this course',
                  : $activity eq 'port'       ? get_portfolio_category(                     printout   => 'Printout generation',
                                                   $uname, $udom, \%setters)                      docs       => 'Course Content',
                  :                             'Communication';                     passwd     => 'Changing of passwords',
                      grades     => 'Course Gradebook',
                      search     => 'Content Search',
                   );
   
       if ($activity eq 'groups' || $activity eq 'boards') {
           if (&Apache::loncommon::course_type() eq 'Community') {
               $descs{'boards'} = 'Discussion posts in this community';
               $descs{'groups'} = 'Groups in this community';
               $descs{'docs'} = 'Community Content';
               $descs{'grades'} = 'Community Gradebook';
           }
       }
   
       my $description = $descs{$activity};
       if ($activity eq 'port') {
           $description = &get_portfolio_category($uname,$udom,\%setters);
       }
       if ($description eq '') {
           $description = 'Communication';
       }
   
     my $showstart = Apache::lonlocal::locallocaltime($startblock);      my $showstart = Apache::lonlocal::locallocaltime($startblock);
     my $showend   = Apache::lonlocal::locallocaltime($endblock);      my $showend   = Apache::lonlocal::locallocaltime($endblock);
   
     my $output;      my $output;
       
     if ( ref($description) ne 'ARRAY' ) {       if ( ref($description) ne 'ARRAY' ) {
         #default: $description is one of the above descriptions          #default: $description is one of the above descriptions
         $output = mt( $description          if ($activity eq 'docs') {
                       . ' will be inaccessible between [_1] and [_2] because'              $output=&mt( 'Access to the content page you are attempting to'
                       . ' communication is being blocked.'                           . ' view will be unavailable between [_1] and [_2] because'
                      ,$showstart, $showend);                             . ' access to selected '.$description.' is being blocked.'
                            ,$showstart, $showend);
           } elsif (($activity eq 'printout') || ($activity eq 'passwd') ||
                    ($activity eq 'grades') || ($activity eq 'search')) {
               $output = mt( $description
                             . ' will be unavailable between [_1] and [_2] because'
                             . ' this functionality is being blocked.'
                             ,$showstart, $showend);
           } else {
               $output = mt( $description
                             . ' will be inaccessible between [_1] and [_2] because'
                             . ' communication is being blocked.'
                             ,$showstart, $showend);
           }
     } else {      } else {
         # @$description is is the array returned from get_portfolio_category()          # @$description is is the array returned from get_portfolio_category()
         # and contains the description (e.g. "Portfolio files belonging to [_1]"          # and contains the description (e.g. "Portfolio files belonging to [_1]"
Line 114  sub blockpage { Line 207  sub blockpage {
         $output = mt( $$description[0]          $output = mt( $$description[0]
                       . ' will be inaccessible between [_2] and [_3] because'                        . ' will be inaccessible between [_2] and [_3] because'
                       . ' communication is being blocked.'                        . ' communication is being blocked.'
                      ,$$description[1], $showstart, $showend)                         ,$$description[1], $showstart, $showend);
     }      }
   
     $output = "<p class=\"LC_info\">$output</p>";      $output = "<p class=\"LC_info\">$output</p>";
   
     # show a table containing details, except if user is trying to look       # show a table containing details, except if user is trying to look
     # at a different user's portfolio files      # at a different user's portfolio files
     if (   $activity ne 'port'                        # no portfolio      if (   $activity ne 'port'                        # no portfolio
         || (   $uname eq $env{'user.name'}            # or own portfolio          || (   $uname eq $env{'user.name'}            # or own portfolio
             && $udom  eq $env{'user.domain'} )               && $udom  eq $env{'user.domain'} ) 
         || Apache::lonnet::is_course($udom, $uname) ) # or portfolio of a course          || Apache::lonnet::is_course($udom, $uname) ) # or portfolio of a course
     {      {
         $output .= build_block_table($startblock,$endblock,\%setters);          $output .= &build_block_table(\%setters);
     }      }
   
     return $output;      return $output;
 }  }
   
 sub build_block_table {  sub build_block_table {
     my ($startblock,$endblock,$setters) = @_;      my ($setters) = @_;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
         'cacb' => 'Currently active communication blocks',          'cacb' => 'Currently active communication/content blocks',
         'cour' => 'Course',          'cour' => 'Course',
         'dura' => 'Duration',          'dura' => 'Duration',
         'blse' => 'Block set by'          'blse' => 'Block set by'
Line 158  sub build_block_table { Line 251  sub build_block_table {
             {              {
                 $fullname = Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);                  $fullname = Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
             }              }
               my $triggertype = $$setters{$course}{triggers}[$i];
               if ($triggertype) {
                   $fullname .= &mt(' (triggered by you when starting timer)');
               }
             my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]};              my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]};
             $openblock = &Apache::lonlocal::locallocaltime($openblock);              $openblock = &Apache::lonlocal::locallocaltime($openblock);
             $closeblock= &Apache::lonlocal::locallocaltime($closeblock);              $closeblock= &Apache::lonlocal::locallocaltime($closeblock);

Removed from v.1.6  
changed lines
  Added in v.1.14.2.2.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.