version 1.177, 2006/12/21 02:51:53
|
version 1.178, 2006/12/28 21:01:39
|
Line 369 sub init_dbs {
|
Line 369 sub init_dbs {
|
{ name => 'section', |
{ name => 'section', |
type => 'VARCHAR(100) BINARY', |
type => 'VARCHAR(100) BINARY', |
restrictions => 'NOT NULL'}, |
restrictions => 'NOT NULL'}, |
{ name => 'status', |
{ name => 'start', |
type => 'VARCHAR(15) BINARY', |
type => 'INT', |
|
restrictions => 'NOT NULL'}, |
|
{ name => 'end', |
|
type => 'INT', |
restrictions => 'NOT NULL'}, |
restrictions => 'NOT NULL'}, |
{ name => 'classification', |
{ name => 'classification', |
type => 'VARCHAR(100) BINARY', }, |
type => 'VARCHAR(100) BINARY', }, |
Line 382 sub init_dbs {
|
Line 385 sub init_dbs {
|
'PRIMARY KEY' => ['student_id'], |
'PRIMARY KEY' => ['student_id'], |
'KEY' => [{ columns => ['student (100)', |
'KEY' => [{ columns => ['student (100)', |
'section (100)', |
'section (100)', |
'status (15)',]},], |
'start', |
|
'end']},], |
}; |
}; |
# |
# |
my $groupnames_table_def = { |
my $groupnames_table_def = { |
Line 906 sub populate_student_table {
|
Line 910 sub populate_student_table {
|
&init_dbs($courseid,0); |
&init_dbs($courseid,0); |
my $dbh = &Apache::lonmysql::get_dbh(); |
my $dbh = &Apache::lonmysql::get_dbh(); |
my $request = 'INSERT IGNORE INTO '.$student_table. |
my $request = 'INSERT IGNORE INTO '.$student_table. |
"(student,section,status) VALUES "; |
"(student,section,start,end) 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 = &get_classlist($cdom,$cnum); |
my $student_count=0; |
my $student_count=0; |
while (my ($student,$data) = each %$classlist) { |
while (my ($student,$data) = each %$classlist) { |
my ($section,$status) = ($data->[&CL_SECTION()], |
my ($section,$start,$end) = ($data->[&CL_SECTION()], |
$data->[&CL_STATUS()]); |
$data->[&CL_START()], |
|
$data->[&CL_END()]); |
if ($section eq '' || $section =~ /^\s*$/) { |
if ($section eq '' || $section =~ /^\s*$/) { |
$section = 'none'; |
$section = 'none'; |
} |
} |
$request .= "('".$student."','".$section."','".$status."'),"; |
if (!defined($start)) { $start = 0; } |
|
if (!defined($end)) { $end = 0; } |
|
$request .= "('".$student."','".$section."','".$start."','".$end."'),"; |
$student_count++; |
$student_count++; |
} |
} |
return if ($student_count == 0); |
return if ($student_count == 0); |
Line 2022 sub get_problem_statistics {
|
Line 2029 sub get_problem_statistics {
|
$request .= ' WHERE a.symb_id='.$symb_id.' AND a.part_id='.$part_id; |
$request .= ' WHERE a.symb_id='.$symb_id.' AND a.part_id='.$part_id; |
# |
# |
# Limit the students included to those specified |
# Limit the students included to those specified |
if (defined($Sections) && lc($Sections->[0]) ne 'all') { |
my ($section_limits,$enrollment_limits)= |
$request .= ' AND ('. |
&limit_by_section_and_status($Sections,$status,'b'); |
join(' OR ', map { "b.section='".$_."'" } @$Sections |
|
).')'; |
|
} |
|
if (defined($status) && lc($status) ne 'any') { |
|
$request .= " AND b.status='".$status."'"; |
|
} |
|
# |
# |
# Limit by starttime and endtime |
# Limit by starttime and endtime |
my $time_requirements = undef; |
my $time_requirements = undef; |
Line 2044 sub get_problem_statistics {
|
Line 2045 sub get_problem_statistics {
|
if (defined($time_requirements)) { |
if (defined($time_requirements)) { |
$request .= ' AND '.$time_requirements; |
$request .= ' AND '.$time_requirements; |
} |
} |
|
if (defined($section_limits)) { |
|
$request .= ' AND '.$section_limits; |
|
} |
|
if (defined($enrollment_limits)) { |
|
$request .= ' AND '.$enrollment_limits; |
|
} |
# Limit by group, as required |
# Limit by group, as required |
if (defined($group_limits)) { |
if (defined($group_limits)) { |
$request .= ' AND '.$group_limits; |
$request .= ' AND '.$group_limits; |
Line 2270 sub limit_by_section_and_status {
|
Line 2277 sub limit_by_section_and_status {
|
} |
} |
my $enrollment_requirements=undef; |
my $enrollment_requirements=undef; |
if (defined($enrollment) && $enrollment ne 'Any') { |
if (defined($enrollment) && $enrollment ne 'Any') { |
$enrollment_requirements = $tablename.".status='".$enrollment."'"; |
my $now = time(); |
|
if ( $enrollment eq 'Future' ) { |
|
$enrollment_requirements = |
|
"( $tablename.start > $now AND ". |
|
"( $tablename.end = 0 OR $tablename.end > $now))"; |
|
} elsif ( $enrollment eq 'Active' ) { |
|
$enrollment_requirements = |
|
"(( $tablename.start = 0 OR $tablename.start < $now ) AND ". |
|
" ( $tablename.end = 0 OR $tablename.end > $now ))"; |
|
} elsif ( $enrollment eq 'Expired' ) { |
|
$enrollment_requirements = |
|
"(( $tablename.start < $now ) AND ". |
|
" ( $tablename.end < $now ))"; |
|
} |
} |
} |
return ($student_requirements,$enrollment_requirements); |
return ($student_requirements,$enrollment_requirements); |
} |
} |