--- loncom/interface/loncoursedata.pm 2006/05/05 20:03:54 1.167 +++ loncom/interface/loncoursedata.pm 2006/05/18 01:08:51 1.171 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.167 2006/05/05 20:03:54 raeburn Exp $ +# $Id: loncoursedata.pm,v 1.171 2006/05/18 01:08:51 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -51,6 +51,7 @@ package Apache::loncoursedata; use strict; use Apache::lonnet; use Apache::lonhtmlcommon; +use Apache::longroup; use Time::HiRes; use Apache::lonmysql; use HTML::TokeParser; @@ -965,9 +966,8 @@ sub populate_groupnames_table { my $dbh = &Apache::lonmysql::get_dbh(); my $cdom = $env{'course.'.$courseid.'.domain'}; my $cnum = $env{'course.'.$courseid.'.num'}; - my %curr_groups; - my $numgrps = &Apache::loncommon::coursegroups(\%curr_groups,$cdom,$cnum); - return if (!$numgrps); + my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum); + return if (!%curr_groups); my $request = 'INSERT IGNORE INTO '.$groupnames_table. '(groupname) VALUES '; foreach my $groupname (sort(keys(%curr_groups)),'none') { @@ -1025,8 +1025,9 @@ sub populate_students_groups_table { "(student_id,group_id) VALUES "; my $cdom = $env{'course.'.$courseid.'.domain'}; 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, + $keylist, $cdom,$cnum); my $record_count = 0; foreach my $student (sort(keys(%{$classgroups}))) { @@ -2599,7 +2600,7 @@ sub count_stats { $limit .= ' AND '.$enrollment_limits; } if ($group_limits) { - $limit .= $group_limits; + $limit .= ' AND '.$group_limits; } $request .= $limit.' GROUP BY a.student_id'; # &Apache::lonnet::logthis('request = '.$/.$request); @@ -2711,7 +2712,7 @@ sub get_response_data { $limit .= ' AND '.$enrollment_requirements; } if (defined($group_limits)) { - $limit .= $group_limits; + $limit .= ' AND '.$group_limits; } $request .= $limit.' ORDER BY b.timestamp'; # &Apache::lonnet::logthis("request =\n".$request); @@ -3142,7 +3143,7 @@ sub get_classlist { } sub get_group_memberships { - my ($classlist,$cdom,$cnum) = @_; + my ($classlist,$keylist,$cdom,$cnum) = @_; my $cid = $cdom.'_'.$cnum; if (!defined($cdom) || !defined($cnum)) { $cid = $env{'request.course.id'}; @@ -3152,11 +3153,11 @@ sub get_group_memberships { my (%classgroups,%studentgroups); my $now = time; my $access_end = $env{'course.'.$cid.'.default_enrollment_end_date'}; - my (%curr_groups,%groupmemberhash); - my $numgroups = &Apache::loncommon::coursegroups(\%curr_groups,$cdom, - $cnum); - if ($numgroups) { - %groupmemberhash = &Apache::lonnet::get_group_membership($cdom,$cnum); + my %curr_groups =&Apache::longroup::coursegroups($cdom,$cnum); + if (%curr_groups) { + my $grpindex = scalar(@{$keylist}); + my %groupmemberhash = + &Apache::lonnet::get_group_membership($cdom,$cnum); foreach my $student (keys(%{$classlist})) { %{$classgroups{$student}} = (); my $hasgroup = 0; @@ -3196,6 +3197,9 @@ sub get_group_memberships { } if (!$hasgroup) { $studentgroups{'none'} ++; + } else { + $classlist->{$student}->[$grpindex] = join(',', + sort(keys(%{$classgroups{$student}{'active'}}))); } } }