Diff for /loncom/interface/loncoursedata.pm between versions 1.167 and 1.173

version 1.167, 2006/05/05 20:03:54 version 1.173, 2006/05/30 12:46:09
Line 51  package Apache::loncoursedata; Line 51  package Apache::loncoursedata;
 use strict;  use strict;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::lonhtmlcommon;  use Apache::lonhtmlcommon;
   use Apache::longroup;
 use Time::HiRes;  use Time::HiRes;
 use Apache::lonmysql;  use Apache::lonmysql;
 use HTML::TokeParser;  use HTML::TokeParser;
 use GDBM_File;  use GDBM_File;
   use lib '/home/httpd/lib/perl/';
   use LONCAPA;
   
 =pod  =pod
   
Line 74  and/or itself. Line 77  and/or itself.
   
 Returns a reference to a hash as described by $values.  $values is  Returns a reference to a hash as described by $values.  $values is
 assumed to be the result of   assumed to be the result of 
     join(':',map {&Apache::lonnet::escape($_)} %orighash);      join(':',map {&escape($_)} %orighash);
   
 This is a helper function for get_current_state.  This is a helper function for get_current_state.
   
Line 84  This is a helper function for get_curren Line 87  This is a helper function for get_curren
 ################################################  ################################################
 sub make_into_hash {  sub make_into_hash {
     my $values = shift;      my $values = shift;
     my %tmp = map { &Apache::lonnet::unescape($_); }      my %tmp = map { &unescape($_); } split(':',$values);
                                            split(':',$values);  
     return \%tmp;      return \%tmp;
 }  }
   
Line 965  sub populate_groupnames_table { Line 967  sub populate_groupnames_table {
     my $dbh = &Apache::lonmysql::get_dbh();      my $dbh = &Apache::lonmysql::get_dbh();
     my $cdom = $env{'course.'.$courseid.'.domain'};      my $cdom = $env{'course.'.$courseid.'.domain'};
     my $cnum = $env{'course.'.$courseid.'.num'};      my $cnum = $env{'course.'.$courseid.'.num'};
     my %curr_groups;      my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
     my $numgrps = &Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum);      return if (!%curr_groups);
     return if (!$numgrps);  
     my $request = 'INSERT IGNORE INTO '.$groupnames_table.      my $request = 'INSERT IGNORE INTO '.$groupnames_table.
                   '(groupname) VALUES ';                    '(groupname) VALUES ';
     foreach my $groupname (sort(keys(%curr_groups)),'none') {      foreach my $groupname (sort(keys(%curr_groups)),'none') {
Line 1025  sub populate_students_groups_table { Line 1026  sub populate_students_groups_table {
         "(student_id,group_id) VALUES ";          "(student_id,group_id) VALUES ";
     my $cdom = $env{'course.'.$courseid.'.domain'};      my $cdom = $env{'course.'.$courseid.'.domain'};
     my $cnum = $env{'course.'.$courseid.'.num'};      my $cnum = $env{'course.'.$courseid.'.num'};
     my $classlist = &get_classlist($cdom,$cnum);      my ($classlist,$keylist) = &get_classlist($cdom,$cnum);
     my ($classgroups,$studentgroups) = &get_group_memberships($classlist,      my ($classgroups,$studentgroups) = &get_group_memberships($classlist,
                                                                 $keylist,
                                                               $cdom,$cnum);                                                                $cdom,$cnum);
     my $record_count = 0;      my $record_count = 0;
     foreach my $student (sort(keys(%{$classgroups}))) {      foreach my $student (sort(keys(%{$classgroups}))) {
Line 2599  sub count_stats { Line 2601  sub count_stats {
         $limit .= ' AND '.$enrollment_limits;          $limit .= ' AND '.$enrollment_limits;
     }      }
     if ($group_limits) {      if ($group_limits) {
         $limit .= $group_limits;          $limit .= ' AND '.$group_limits;
     }      }
     $request .= $limit.' GROUP BY a.student_id';      $request .= $limit.' GROUP BY a.student_id';
 #    &Apache::lonnet::logthis('request = '.$/.$request);  #    &Apache::lonnet::logthis('request = '.$/.$request);
Line 2711  sub get_response_data { Line 2713  sub get_response_data {
         $limit .= ' AND '.$enrollment_requirements;          $limit .= ' AND '.$enrollment_requirements;
     }      }
     if (defined($group_limits)) {      if (defined($group_limits)) {
         $limit .= $group_limits;          $limit .= ' AND '.$group_limits;
     }      }
     $request .= $limit.' ORDER BY b.timestamp';      $request .= $limit.' ORDER BY b.timestamp';
 #    &Apache::lonnet::logthis("request =\n".$request);  #    &Apache::lonnet::logthis("request =\n".$request);
Line 3142  sub get_classlist { Line 3144  sub get_classlist {
 }  }
   
 sub get_group_memberships {  sub get_group_memberships {
     my ($classlist,$cdom,$cnum) = @_;      my ($classlist,$keylist,$cdom,$cnum) = @_;
   
       return ({},{}) if (!ref($classlist) || !ref($keylist));
   
     my $cid = $cdom.'_'.$cnum;      my $cid = $cdom.'_'.$cnum;
     if (!defined($cdom) || !defined($cnum)) {      if (!defined($cdom) || !defined($cnum)) {
         $cid =  $env{'request.course.id'};          $cid =  $env{'request.course.id'};
Line 3152  sub get_group_memberships { Line 3157  sub get_group_memberships {
     my (%classgroups,%studentgroups);      my (%classgroups,%studentgroups);
     my $now = time;      my $now = time;
     my $access_end = $env{'course.'.$cid.'.default_enrollment_end_date'};      my $access_end = $env{'course.'.$cid.'.default_enrollment_end_date'};
     my (%curr_groups,%groupmemberhash);      my %curr_groups =&Apache::longroup::coursegroups($cdom,$cnum);
     my $numgroups = &Apache::loncommon::coursegroups(\%curr_groups,$cdom,      if (%curr_groups) {
                                                      $cnum);          my $grpindex = scalar(@{$keylist});
     if ($numgroups) {          my %groupmemberhash = 
         %groupmemberhash = &Apache::lonnet::get_group_membership($cdom,$cnum);      &Apache::lonnet::get_group_membership($cdom,$cnum);
         foreach my $student (keys(%{$classlist})) {          foreach my $student (keys(%{$classlist})) {
             %{$classgroups{$student}} = ();              %{$classgroups{$student}} = ();
             my $hasgroup = 0;              my $hasgroup = 0;
Line 3196  sub get_group_memberships { Line 3201  sub get_group_memberships {
             }              }
             if (!$hasgroup) {              if (!$hasgroup) {
                 $studentgroups{'none'} ++;                  $studentgroups{'none'} ++;
               } else {
                   $classlist->{$student}->[$grpindex] = join(',',
                                 sort(keys(%{$classgroups{$student}{'active'}})));
             }              }
         }          }
     }      }

Removed from v.1.167  
changed lines
  Added in v.1.173


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>