Diff for /loncom/interface/lonwhatsnew.pm between versions 1.105.2.4 and 1.105.2.8

version 1.105.2.4, 2012/12/13 22:09:33 version 1.105.2.8, 2013/11/03 18:59:29
Line 532  sub display_actions_box { Line 532  sub display_actions_box {
         $headings{'crslogin'} = &mt('Last login for users in last 24 hours');          $headings{'crslogin'} = &mt('Last login for users in last 24 hours');
     }      }
   
     my $now = time;      my ($now,$starttime,$activatedstart,$expiredstart,$crsloginstart);
       $now = time;
   
     if ($timediff{'versions'} == -1) {      if ($timediff{'versions'} == -1) {
         $timediff{'versions'} = time;          $starttime = 0;
       } else {
           $starttime = $now - $timediff{'versions'};
     }      }
     my $starttime = $now - $timediff{'versions'};  
   
     if ($timediff{'newroles'} == -1) {      if ($timediff{'newroles'} == -1) {
         $timediff{'newroles'} = time;          $activatedstart = 0;
       } else {
           $activatedstart = $now - $timediff{'newroles'};
     }      }
     my $activatedstart = $now - $timediff{'newroles'};  
   
     if ($timediff{'oldroles'} == -1) {      if ($timediff{'oldroles'} == -1) {
         $timediff{'oldroles'} = time;          $expiredstart = 0;
       } else {
           $expiredstart = $now - $timediff{'oldroles'};
     }      }
     my $expiredstart = $now - $timediff{'oldroles'};  
   
     if ($timediff{'crslogin'} == -1) {      if ($timediff{'crslogin'} == -1) {
         $timediff{'crslogin'} = time;          $crsloginstart = 0;
       } else {
           $crsloginstart = $now - $timediff{'crslogin'};
     }      }
   
     my $crsloginstart = $now - $timediff{'crslogin'};  
   
     my $countunread = $display_settings{$cid.':countunread'};      my $countunread = $display_settings{$cid.':countunread'};
     unless (defined($countunread)) {      unless (defined($countunread)) {
         $countunread = 'on';          $countunread = 'on';
Line 593  sub display_actions_box { Line 598  sub display_actions_box {
     if ($needitems) {      if ($needitems) {
         $itemserror = &getitems(\%unread,\%ungraded,\%bombed,\%triggered,\%changed,\@newdiscussions,\@tograde,\@bombs,\@warnings,\%threshold,$cdom,$crs,\%res_title,\%show,$starttime,$countunread);          $itemserror = &getitems(\%unread,\%ungraded,\%bombed,\%triggered,\%changed,\@newdiscussions,\@tograde,\@bombs,\@warnings,\%threshold,$cdom,$crs,\%res_title,\%show,$starttime,$countunread);
     }      }
       my $classlist;
       if ($show{'oldroles'} || $show{'newroles'} || $show{'crslogin'}) {
           $classlist = &Apache::loncoursedata::get_classlist();
       }
     if ($show{'coursenormalmail'}) {      if ($show{'coursenormalmail'}) {
         $msgcount = &getnormalmail(\@newmsgs);          $msgcount = &getnormalmail(\@newmsgs);
     }      }
Line 600  sub display_actions_box { Line 609  sub display_actions_box {
         $critmsgcount = &getcritmail(\@critmsgs);          $critmsgcount = &getcritmail(\@critmsgs);
     }      }
     if ($show{'oldroles'}) {      if ($show{'oldroles'}) {
         $expirecount = &getexpired(\%expired,$expiredstart,'previous');          $expirecount = &getexpired(\%expired,$expiredstart,'previous',$classlist);
     }      }
     if ($show{'newroles'}) {      if ($show{'newroles'}) {
         $activecount = &getactivated(\%activated,$activatedstart,'active');          $activecount = &getactivated(\%activated,$activatedstart,'active',$classlist);
     }      }
     if ($show{'crslogin'}) {      if ($show{'crslogin'}) {
         $logincount = &getloggedin($cdom,$crs,\%loggedin,$crsloginstart);          $logincount = &getloggedin($cdom,$crs,\%loggedin,$crsloginstart);
Line 636  sub display_actions_box { Line 645  sub display_actions_box {
             if ($displayed == $halfway) {              if ($displayed == $halfway) {
                 $r->print('</td><td>&nbsp;</td><td class="LC_right_col" >');                  $r->print('</td><td>&nbsp;</td><td class="LC_right_col" >');
             }              }
             &display_launcher($r,$actionitem,$refpage,$checkallowed,\%show,\%headings,\%res_title,\@tograde,\%ungraded,\@bombs,\%bombed,\%changed,\@warnings,\%triggered,\@newdiscussions,\%unread,$msgcount,\@newmsgs,$critmsgcount,\@critmsgs,\%interval,$countunread,\%expired,$expirecount,\%activated,$activecount,$crstype,$itemserror,\%loggedin,$logincount);              &display_launcher($r,$actionitem,$refpage,$checkallowed,\%show,\%headings,\%res_title,\@tograde,\%ungraded,\@bombs,\%bombed,\%changed,\@warnings,\%triggered,\@newdiscussions,\%unread,$msgcount,\@newmsgs,$critmsgcount,\@critmsgs,\%interval,$countunread,\%expired,$expirecount,\%activated,$activecount,$crstype,$itemserror,\%loggedin,$logincount,$classlist);
             $displayed ++;               $displayed ++; 
         }          }
     }      }
Line 683  sub display_threshold_config { Line 692  sub display_threshold_config {
     foreach my $type (@thresholditems) {      foreach my $type (@thresholditems) {
         my $parameter = $env{'request.course.id'}.':threshold_'.$type;          my $parameter = $env{'request.course.id'}.':threshold_'.$type;
 # onchange is javascript to automatically check the 'Set' button.  # onchange is javascript to automatically check the 'Set' button.
         my $onchange = 'onFocus="javascript:window.document.forms'.          my $onchange = 'onfocus="javascript:window.document.forms'.
               "['thresholdform'].elements['".$parameter."_setparmval']".                "['thresholdform'].elements['".$parameter."_setparmval']".
               '.checked=true;"';                '.checked=true;"';
         $r->print(&Apache::loncommon::start_data_table_row()."\n".          $r->print(&Apache::loncommon::start_data_table_row()."\n".
Line 892  sub display_launcher { Line 901  sub display_launcher {
         $tograde,$ungraded,$bombs,$bombed,$changed,$warnings,$triggered,          $tograde,$ungraded,$bombs,$bombed,$changed,$warnings,$triggered,
         $newdiscussions,$unread,$msgcount,$newmsgs,$critmsgcount,$critmsgs,          $newdiscussions,$unread,$msgcount,$newmsgs,$critmsgcount,$critmsgs,
         $interval,$countunread,$expired,$expirecount,$activated,$activecount,          $interval,$countunread,$expired,$expirecount,$activated,$activecount,
         $crstype,$itemserror,$loggedin,$logincount) = @_;          $crstype,$itemserror,$loggedin,$logincount,$classlist) = @_;
   
     if ($$checkallowed{$action}) {      if ($$checkallowed{$action}) {
         &start_box($r,$show,$headings,$action,$refpage);          &start_box($r,$show,$headings,$action,$refpage);
Line 915  sub display_launcher { Line 924  sub display_launcher {
                 &display_coursecritmail($r,$critmsgcount,$critmsgs);                  &display_coursecritmail($r,$critmsgcount,$critmsgs);
             } elsif ($action eq 'newroles') { # ACTIVATED ROLES              } elsif ($action eq 'newroles') { # ACTIVATED ROLES
                 &display_rolechanges($r,$activecount,$activated,$interval->{'newroles'},                  &display_rolechanges($r,$activecount,$activated,$interval->{'newroles'},
                                      $crstype);                                       $crstype,$classlist);
             } elsif ($action eq 'oldroles') { # EXPIRED ROLES              } elsif ($action eq 'oldroles') { # EXPIRED ROLES
                 &display_rolechanges($r,$expirecount,$expired,$interval->{'oldroles'},                  &display_rolechanges($r,$expirecount,$expired,$interval->{'oldroles'},
                                      $crstype);                                       $crstype,$classlist);
             } elsif ($action eq 'crslogin') { #LAST LOGIN              } elsif ($action eq 'crslogin') { #LAST LOGIN
                 &display_crslogins($r,$logincount,$loggedin,$interval->{'crslogin'},                  &display_crslogins($r,$logincount,$loggedin,$interval->{'crslogin'},
                                    $crstype);                                     $crstype,$classlist);
             }              }
         }          }
         &end_box($r);          &end_box($r);
Line 1322  sub getcritmail { Line 1331  sub getcritmail {
 }  }
   
 sub getexpired {  sub getexpired {
     my ($rolechgs,$rolechgtime,$status) = @_;      my ($rolechgs,$rolechgtime,$status,$classlist) = @_;
     my $expirecount = &getrolechanges($rolechgs,$rolechgtime,$status);      my $expirecount = &getrolechanges($rolechgs,$rolechgtime,$status,$classlist);
     return $expirecount;      return $expirecount;
 }  }
   
 sub getactivated {  sub getactivated {
     my ($rolechgs,$rolechgtime,$status) = @_;      my ($rolechgs,$rolechgtime,$status,$classlist) = @_;
     my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};      my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};      my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
     my $now = time();      my $now = time();
Line 1340  sub getactivated { Line 1349  sub getactivated {
     my (%stucounted,%advcounted);      my (%stucounted,%advcounted);
     my $activatedcount = 0;      my $activatedcount = 0;
     if (keys(%changes) > 0) {      if (keys(%changes) > 0) {
         foreach my $chg (sort { $b <=> $a } (keys(%changes))) {          foreach my $chg (keys(%changes)) {
             if (ref($changes{$chg}) eq 'HASH') {              if (ref($changes{$chg}) eq 'HASH') {
                 my $timestamp = $changes{$chg}{'exe_time'};                  next if ($changes{$chg}{'delflag'});
                 if ($timestamp) {                  if ($rolechgtime > 0) {
                     if ($rolechgtime > 0) {                      next if ($changes{$chg}{'exe_time'} < $rolechgtime);
                         if ($timestamp < $rolechgtime) {                  }
                             last;                  if ($changes{$chg}{'exe_time'}) {
                         }                      my $timestamp = $changes{$chg}{'exe_time'};
                     }  
                     if (ref($changes{$chg}{'logentry'}) eq 'HASH') {                      if (ref($changes{$chg}{'logentry'}) eq 'HASH') {
                         next if ($changes{$chg}{'delflag'});  
                         my $start = $changes{$chg}{'logentry'}{'start'};  
                         my $end = $changes{$chg}{'logentry'}{'end'};                          my $end = $changes{$chg}{'logentry'}{'end'};
                         my $section = $changes{$chg}{'logentry'}{'section'};  
                         my $role = $changes{$chg}{'logentry'}{'role'};  
                         my $uname = $changes{$chg}{'uname'};  
                         my $udom = $changes{$chg}{'udom'};  
                         next if ($end && $end <= $now);                          next if ($end && $end <= $now);
                           my $start = $changes{$chg}{'logentry'}{'start'};
                           next if ($start >= $timestamp);
                           my $section = $changes{$chg}{'logentry'}{'section'};
                         if (($viewablesec ne '') && ($section ne '')) {                          if (($viewablesec ne '') && ($section ne '')) {
                             next if ($viewablesec ne $section);                              next if ($viewablesec ne $section);
                         }                          }
                         next if ($start >= $timestamp);                          my $role = $changes{$chg}{'logentry'}{'role'};
                           my $uname = $changes{$chg}{'uname'};
                           my $udom = $changes{$chg}{'udom'};
                         if ($role eq 'st') {                          if ($role eq 'st') {
                             $stucounted{$uname.':'.$udom.':'.$section} = $start.':'.$end;                              $stucounted{$uname.':'.$udom.':'.$section} = $start.':'.$end;
                         } else {                          } else {
Line 1381  sub getactivated { Line 1388  sub getactivated {
             }              }
         }          }
     }      }
     $activatedcount += &getrolechanges($rolechgs,$rolechgtime,$status,\%stucounted,\%advcounted);      $activatedcount += &getrolechanges($rolechgs,$rolechgtime,$status,$classlist,\%stucounted,
                                          \%advcounted);
     return $activatedcount;      return $activatedcount;
 }  }
   
 sub getrolechanges {  sub getrolechanges {
     my ($rolechgs,$rolechgtime,$status,$stucountref,$advcountref) = @_;      my ($rolechgs,$rolechgtime,$status,$classlist,$stucountref,$advcountref) = @_;
     my (%stucounted,%advcounted);      my (%stucounted,%advcounted);
     if (ref($stucountref) eq 'HASH') {      if (ref($stucountref) eq 'HASH') {
         %stucounted = %{$stucountref};          %stucounted = %{$stucountref};
Line 1404  sub getrolechanges { Line 1412  sub getrolechanges {
     my ($permission,$allowed) =      my ($permission,$allowed) =
         &Apache::lonuserutils::get_permission($context);          &Apache::lonuserutils::get_permission($context);
     my $viewablesec = &Apache::lonuserutils::viewable_section($permission);      my $viewablesec = &Apache::lonuserutils::viewable_section($permission);
     my $classlist = &Apache::loncoursedata::get_classlist();  
     my $secidx = &Apache::loncoursedata::CL_SECTION();      my $secidx = &Apache::loncoursedata::CL_SECTION();
     my $startidx = &Apache::loncoursedata::CL_START();      my $startidx = &Apache::loncoursedata::CL_START();
     my $endidx = &Apache::loncoursedata::CL_END();      my $endidx = &Apache::loncoursedata::CL_END();
     my $rolechgcount = 0;      my $rolechgcount = 0;
     foreach my $key (keys(%{$classlist})) {      if (ref($classlist) eq 'HASH') {
         my ($userstatus,$eventtime);             foreach my $key (keys(%{$classlist})) {
         my $student = $classlist->{$key};              my ($userstatus,$eventtime);   
         if (ref($student) eq 'ARRAY') {              my $student = $classlist->{$key};
             my $start = $student->[$startidx];              if (ref($student) eq 'ARRAY') {
             my $end = $student->[$endidx];                  my $start = $student->[$startidx];
             my $sec = $student->[$secidx];                   my $end = $student->[$endidx];
             my ($stuname,$studom) = split(/:/,$key);                  my $sec = $student->[$secidx]; 
             if ($status eq 'active') {                  my ($stuname,$studom) = split(/:/,$key);
                 if (exists($stucounted{$key.':'.$sec})) {                  if ($status eq 'active') {
                     next;                      if (exists($stucounted{$key.':'.$sec})) {
                           next;
                       }
                 }                  }
             }                  if (($end == 0) || ($end > $start)) {
             if (($end == 0) || ($end > $start)) {                      if ($start <= $now) {
                 if ($start <= $now) {                          if ($end && $end < $now) {
                     if ($end && $end < $now) {                              if ($rolechgtime > 0) {
                         if ($rolechgtime > 0) {                                  if ($end > $rolechgtime) {
                             if ($end > $rolechgtime) {                                      $userstatus = 'previous';
                                   }
                               } else {
                                 $userstatus = 'previous';                                  $userstatus = 'previous';
                             }                              }
                         } else {                          } else {
                             $userstatus = 'previous';                              if ($rolechgtime > 0) {
                         }                                  if ($start >= $rolechgtime) {
                     } else {                                      $userstatus = 'active';
                         if ($rolechgtime > 0) {                                  }
                             if ($start >= $rolechgtime) {                              } else {
                                 $userstatus = 'active';                                  $userstatus = 'active';
                             }                              }
                         } else {  
                             $userstatus = 'active';  
                         }                          }
                     }                      }
                 }                  }
                   next if ($userstatus ne $status);
                   if ($status eq 'active') {
                       $eventtime = $start;
                   } else {
                       $eventtime = $end;
                   }
                   if (($viewablesec ne '') && ($sec ne '')) {
                       next if ($viewablesec ne $sec);
                   }
                   my %chginfo = (
                                   'section' => $sec,
                                   'uname'   => $stuname,
                                   'udom'    => $studom,
                                   'role'    => 'st', 
                                   'status'  => $userstatus,
                                 );
                   $rolechgcount ++;
                   push(@{$rolechgs->{$eventtime}},\%chginfo);
             }              }
             next if ($userstatus ne $status);  
             if ($status eq 'active') {  
                 $eventtime = $start;  
             } else {  
                 $eventtime = $end;  
             }  
             if (($viewablesec ne '') && ($sec ne '')) {  
                 next if ($viewablesec ne $sec);  
             }  
             my %chginfo = (  
                             'section' => $sec,  
                             'uname'   => $stuname,  
                             'udom'    => $studom,  
                             'role'    => 'st',   
                             'status'  => $userstatus,  
                           );  
             $rolechgcount ++;  
             push (@{$rolechgs->{$eventtime}},\%chginfo);  
         }          }
     }      }
     my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,      my %advrolehash = &Apache::lonnet::get_my_roles($cnum,$cdom,undef,
Line 1752  sub display_versionchanges { Line 1761  sub display_versionchanges {
 }  }
   
 sub display_rolechanges {  sub display_rolechanges {
     my ($r,$chgcount,$changed,$interval,$crstype) = @_;      my ($r,$chgcount,$changed,$interval,$crstype,$classlist) = @_;
     my $now = time();      my $now = time();
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
         'user'  => 'User',          'user'  => 'User',
Line 1771  sub display_rolechanges { Line 1780  sub display_rolechanges {
         if (ref($changed) eq 'HASH') {          if (ref($changed) eq 'HASH') {
             my @changes = sort { $b <=> $a } (keys(%{$changed}));              my @changes = sort { $b <=> $a } (keys(%{$changed}));
             my $changenum = 0;              my $changenum = 0;
               my $fullnameidx = &Apache::loncoursedata::CL_FULLNAME();
             foreach my $item (@changes) {              foreach my $item (@changes) {
                 if (ref($changed->{$item}) eq 'ARRAY') {                  if (ref($changed->{$item}) eq 'ARRAY') {
                     foreach my $chg (@{$changed->{$item}}) {                      foreach my $chg (@{$changed->{$item}}) {
Line 1788  sub display_rolechanges { Line 1798  sub display_rolechanges {
                             my $udom = $chg->{'udom'};                              my $udom = $chg->{'udom'};
                             $changenum ++;                              $changenum ++;
                             my $css_class = $changenum%2?' class="LC_odd_row"':'';                              my $css_class = $changenum%2?' class="LC_odd_row"':'';
                               my $fullname;
                               if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
                                   $fullname = $classlist->{$uname.':'.$udom}->[$fullnameidx];
                               } else {
                                   $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');
                               }
                             my $link =                               my $link = 
                                 &Apache::loncommon::aboutmewrapper(&Apache::loncommon::plainname($uname,$udom),$uname,$udom);                                  &Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
                             $r->print('<tr'.$css_class.'>'.                              $r->print('<tr'.$css_class.'>'.
                                       '<td>'.&Apache::lonlocal::locallocaltime($item).'</td>'.                                        '<td>'.&Apache::lonlocal::locallocaltime($item).'</td>'.
                                       '<td>'.$link.'</td>'.                                        '<td>'.$link.'</td>'.
Line 1809  sub display_rolechanges { Line 1825  sub display_rolechanges {
 }  }
   
 sub display_crslogins {  sub display_crslogins {
     my ($r,$logincount,$loggedin,$interval,$crstype) = @_;      my ($r,$logincount,$loggedin,$interval,$crstype,$classlist) = @_;
       return unless (ref($classlist) eq 'HASH');
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
         'user'   => 'User',          'user'   => 'User',
         'role'   => 'Role',          'role'   => 'Role',
Line 1830  sub display_crslogins { Line 1847  sub display_crslogins {
         if (ref($loggedin) eq 'HASH') {          if (ref($loggedin) eq 'HASH') {
             my @logins = sort { $b <=> $a } (keys(%{$loggedin}));              my @logins = sort { $b <=> $a } (keys(%{$loggedin}));
             my $numlogin = 0;              my $numlogin = 0;
               my $fullnameidx = &Apache::loncoursedata::CL_FULLNAME();
             foreach my $item (@logins) {              foreach my $item (@logins) {
                 if (ref($loggedin->{$item}) eq 'ARRAY') {                  if (ref($loggedin->{$item}) eq 'ARRAY') {
                     foreach my $user (@{$loggedin->{$item}}) {                      foreach my $user (@{$loggedin->{$item}}) {
Line 1846  sub display_crslogins { Line 1864  sub display_crslogins {
                             $counts{$user->{'role'}}{$section} ++;                              $counts{$user->{'role'}}{$section} ++;
                             my $uname = $user->{'uname'};                              my $uname = $user->{'uname'};
                             my $udom = $user->{'udom'};                              my $udom = $user->{'udom'};
                             my $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');                              my $fullname;
                               if (ref($classlist->{$uname.':'.$udom}) eq 'ARRAY') {
                                   $fullname = $classlist->{$uname.':'.$udom}->[$fullnameidx];
                               } else {
                                   $fullname = &Apache::loncommon::plainname($uname,$udom,'lastname');
                               }
                             my $link =                              my $link =
                                 &Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);                                  &Apache::loncommon::aboutmewrapper($fullname,$uname,$udom);
                             push(@{$bylastname{$fullname}},                              push(@{$bylastname{$fullname}},

Removed from v.1.105.2.4  
changed lines
  Added in v.1.105.2.8


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.