--- loncom/interface/loncoursedata.pm 2006/05/05 21:35:31 1.168 +++ loncom/interface/loncoursedata.pm 2006/10/06 19:02:20 1.176 @@ -1,6 +1,6 @@ # The LearningOnline Network with CAPA # -# $Id: loncoursedata.pm,v 1.168 2006/05/05 21:35:31 raeburn Exp $ +# $Id: loncoursedata.pm,v 1.176 2006/10/06 19:02:20 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -51,10 +51,13 @@ package Apache::loncoursedata; use strict; use Apache::lonnet; use Apache::lonhtmlcommon; +use Apache::longroup; use Time::HiRes; use Apache::lonmysql; use HTML::TokeParser; use GDBM_File; +use lib '/home/httpd/lib/perl/'; +use LONCAPA; =pod @@ -74,7 +77,7 @@ and/or itself. Returns a reference to a hash as described by $values. $values is 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. @@ -84,8 +87,7 @@ This is a helper function for get_curren ################################################ sub make_into_hash { my $values = shift; - my %tmp = map { &Apache::lonnet::unescape($_); } - split(':',$values); + my %tmp = map { &unescape($_); } split(':',$values); return \%tmp; } @@ -965,9 +967,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 +1026,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}))) { @@ -1137,7 +1139,6 @@ sub update_full_student_data { &setup_table_names($courseid); # my $student_id = &get_student_id($sname,$sdom); - my @group_ids = &get_students_groupids($student_id); my $student = $sname.':'.$sdom; # my $returnstatus = 'okay'; @@ -1420,7 +1421,6 @@ sub update_student_data { &setup_table_names($courseid); # my $student_id = &get_student_id($sname,$sdom); - my @group_ids = &get_students_groupids($student_id); my $student = $sname.':'.$sdom; # my $returnstatus = 'okay'; @@ -1472,7 +1472,6 @@ sub store_student_data { my ($sname,$sdom,$courseid,$student_data) = @_; # my $student_id = &get_student_id($sname,$sdom); - my @group_ids = &get_students_groupids($student_id); my $student = $sname.':'.$sdom; # my $returnstatus = 'okay'; @@ -1669,7 +1668,6 @@ sub ensure_current_data { $Apache::lonnet::perlvar{'lonUsersDir'}); # my $student_id = &get_student_id($sname,$sdom); - my @group_ids = &get_students_groupids($student_id); my @Result = &Apache::lonmysql::get_rows($student_table, "student_id ='$student_id'"); my $data = undef; @@ -1718,7 +1716,6 @@ sub ensure_current_full_data { $Apache::lonnet::perlvar{'lonUsersDir'}); # my $student_id = &get_student_id($sname,$sdom); - my @group_ids = &get_students_groupids($student_id); my @Result = &Apache::lonmysql::get_rows($student_table, "student_id ='$student_id'"); my $updatetime; @@ -2726,7 +2723,7 @@ sub get_response_data { if (ref($dataset) eq 'ARRAY' && scalar(@$dataset)>0) { # Clear the \'s from around the submission for (my $i =0;$i[$i]->[3] =~ s/(\'$|^\')//g; + $dataset->[$i]->[&RD_submission()] =~ s/(\'$|^\')//g; } return $dataset; } @@ -2754,7 +2751,6 @@ sub get_response_data_by_student { # my $student_id = &get_student_id($student->{'username'}, $student->{'domain'}); - my @group_ids = &get_students_groupids($student_id); # my $dbh = &Apache::lonmysql::get_dbh(); return undef if (! defined($dbh)); @@ -2788,7 +2784,7 @@ sub get_response_data_by_student { if (ref($dataset) eq 'ARRAY' && scalar(@$dataset)>0) { # Clear the \'s from around the submission for (my $i =0;$i[$i]->[2] =~ s/(\'$|^\')//g; + $dataset->[$i]->[&RDs_submission] =~ s/(\'$|^\')//g; } return $dataset; } @@ -3130,6 +3126,9 @@ sub get_classlist { if(((!$end) || $now < $end) && ((!$start) || ($now > $start))) { $status='Active'; } + if(($now < $start) && ((!$end) || $now < $end )) { + $status='Future'; + } $classlist{$student} = [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type,$lockedtype]; } @@ -3142,7 +3141,10 @@ sub get_classlist { } sub get_group_memberships { - my ($classlist,$cdom,$cnum) = @_; + my ($classlist,$keylist,$cdom,$cnum) = @_; + + return ({},{}) if (!ref($classlist) || !ref($keylist)); + my $cid = $cdom.'_'.$cnum; if (!defined($cdom) || !defined($cnum)) { $cid = $env{'request.course.id'}; @@ -3152,11 +3154,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 +3198,9 @@ sub get_group_memberships { } if (!$hasgroup) { $studentgroups{'none'} ++; + } else { + $classlist->{$student}->[$grpindex] = join(',', + sort(keys(%{$classgroups{$student}{'active'}}))); } } }