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'}}))); |
} |
} |
} |
} |
} |
} |