Diff for /loncom/interface/loncoursedata.pm between versions 1.133 and 1.139

version 1.133, 2004/05/13 13:55:35 version 1.139, 2004/09/23 14:46:03
Line 155  sub get_sequence_assessment_data { Line 155  sub get_sequence_assessment_data {
                 next;                  next;
             }              }
             # get the map itself, instead of BEGIN_MAP              # get the map itself, instead of BEGIN_MAP
             $title = $previous->title();              $title = $previous->compTitle;
             $title =~ s/\:/\&\#058;/g;  
             $symb  = $previous->symb();              $symb  = $previous->symb();
             $src   = $previous->src();              $src   = $previous->src();
             # pick up the filename if there is no title available  
             if (! defined($title) || $title eq '') {  
                 ($title) = ($src=~/\/([^\/]*)$/);  
             }  
             $randompick = $previous->randompick();              $randompick = $previous->randompick();
             my $newmap = { title    => $title,              my $newmap = { title    => $title,
                            src      => $src,                             src      => $src,
Line 184  sub get_sequence_assessment_data { Line 179  sub get_sequence_assessment_data {
         next if (! ref($curRes));          next if (! ref($curRes));
         next if (! $curRes->is_problem() && $curRes->src() !~ /\.survey$/);          next if (! $curRes->is_problem() && $curRes->src() !~ /\.survey$/);
         # Okay, from here on out we only deal with assessments          # Okay, from here on out we only deal with assessments
         $title = $curRes->title();          $title = $curRes->compTitle();
         $title =~ s/\:/\&\#058;/g;  
         $symb  = $curRes->symb();          $symb  = $curRes->symb();
         $src   = $curRes->src();          $src   = $curRes->src();
         # Grab the filename if there is not title available  
         if (! defined($title) || $title eq '') {  
             ($title) = ($src=~ m:/([^/]*)$:);  
         }  
         my $parts = $curRes->parts();          my $parts = $curRes->parts();
         my %partdata;          my %partdata;
         foreach my $part (@$parts) {          foreach my $part (@$parts) {
Line 199  sub get_sequence_assessment_data { Line 189  sub get_sequence_assessment_data {
             my @Ids       = $curRes->responseIds($part);              my @Ids       = $curRes->responseIds($part);
             $partdata{$part}->{'ResponseTypes'}= \@Responses;              $partdata{$part}->{'ResponseTypes'}= \@Responses;
             $partdata{$part}->{'ResponseIds'}  = \@Ids;              $partdata{$part}->{'ResponseIds'}  = \@Ids;
               $partdata{$part}->{'Survey'}       = $curRes->is_survey($part);
             # Count how many responses of each type there are in this part              # Count how many responses of each type there are in this part
             foreach (@Responses) {              foreach (@Responses) {
                 $partdata{$part}->{$_}++;                  $partdata{$part}->{$_}++;
Line 547  store student data. Line 538  store student data.
 ################################################  ################################################
 ################################################  ################################################
 sub init_dbs {  sub init_dbs {
     my $courseid = shift;      my ($courseid,$drop) = @_;
     &setup_table_names($courseid);      &setup_table_names($courseid);
     #      #
     # Drop any of the existing tables      # Drop any of the existing tables
     foreach my $table (@Tables) {      if ($drop) {
         &Apache::lonmysql::drop_table($table);          foreach my $table (@Tables) {
               &Apache::lonmysql::drop_table($table);
           }
     }      }
     #      #
     # Note - changes to this table must be reflected in the code that       # Note - changes to this table must be reflected in the code that 
Line 1081  sub populate_student_table { Line 1074  sub populate_student_table {
     }      }
     #      #
     &setup_table_names($courseid);      &setup_table_names($courseid);
       &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,status) VALUES ";
Line 1594  sub ensure_tables_are_set_up { Line 1588  sub ensure_tables_are_set_up {
         !$found_performance   || !$found_parameters        ||          !$found_performance   || !$found_parameters        ||
         !$found_fulldump_part || !$found_fulldump_response ||          !$found_fulldump_part || !$found_fulldump_response ||
         !$found_fulldump_timestamp || !$found_weight ) {          !$found_fulldump_timestamp || !$found_weight ) {
         if (&init_dbs($courseid)) {          if (&init_dbs($courseid,1)) {
             return 'error';              return 'error';
         }          }
     }      }
Line 2299  sub get_sum_of_scores { Line 2293  sub get_sum_of_scores {
     if (! defined($courseid)) {      if (! defined($courseid)) {
         $courseid = $ENV{'request.course.id'};          $courseid = $ENV{'request.course.id'};
     }      }
       if (defined($students) && 
           ((@$students == 0) ||
            (@$students == 1 && (! defined($students->[0]) || 
                                 $students->[0] eq ''))
            )
           ){
           undef($students);
       }
     #      #
     &setup_table_names($courseid);      &setup_table_names($courseid);
     my $dbh = &Apache::lonmysql::get_dbh();      my $dbh = &Apache::lonmysql::get_dbh();
Line 2321  sub get_sum_of_scores { Line 2323  sub get_sum_of_scores {
     $sth->execute();      $sth->execute();
     my $rows = $sth->fetchrow_arrayref();      my $rows = $sth->fetchrow_arrayref();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 1 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed, fetchrow_arrayrefed'.
                                    $/.$request);
         return (undef,undef);          return (undef,undef);
     }      }
     return ($rows->[0],$rows->[1]);      return ($rows->[0],$rows->[1]);
Line 2501  sub get_student_data { Line 2505  sub get_student_data {
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 2 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed '.$/.$request);
         return undef;          return undef;
     }      }
     my $dataset = $sth->fetchall_arrayref();      my $dataset = $sth->fetchall_arrayref();
Line 2526  sub get_response_data { Line 2531  sub get_response_data {
     #      #
     &setup_table_names($courseid);      &setup_table_names($courseid);
     my $symb_id = &get_symb_id($symb);      my $symb_id = &get_symb_id($symb);
       if (! defined($symb_id)) {
           &Apache::lonnet::logthis('Unable to find symb for '.$symb.' in '.$courseid);
           return undef;
       }
     my $response_id = &get_part_id($response);      my $response_id = &get_part_id($response);
       if (! defined($response_id)) {
           &Apache::lonnet::logthis('Unable to find id for '.$response.' in '.$courseid);
           return undef;
       }
     #      #
     my $dbh = &Apache::lonmysql::get_dbh();      my $dbh = &Apache::lonmysql::get_dbh();
     return undef if (! defined($dbh));      return undef if (! defined($dbh));
Line 2562  sub get_response_data { Line 2575  sub get_response_data {
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 3 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed '.$/.$request);
         return undef;          return undef;
     }      }
     my $dataset = $sth->fetchall_arrayref();      my $dataset = $sth->fetchall_arrayref();
Line 2618  sub get_response_data_by_student { Line 2632  sub get_response_data_by_student {
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 4 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed '.$/.$request);
         return undef;          return undef;
     }      }
     my $dataset = $sth->fetchall_arrayref();      my $dataset = $sth->fetchall_arrayref();
Line 2670  sub get_response_time_data { Line 2685  sub get_response_time_data {
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 5 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed '.$/.$request);
         return undef;          return undef;
     }      }
     my $dataset = $sth->fetchall_arrayref();      my $dataset = $sth->fetchall_arrayref();
Line 2760  sub get_student_scores { Line 2776  sub get_student_scores {
     my $sth = $dbh->prepare($request);      my $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 6 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed '.$/.$request);
         return undef;          return undef;
     }      }
     $request = 'SELECT score,COUNT(*) FROM '.$tmptable.' GROUP BY score';      $request = 'SELECT score,COUNT(*) FROM '.$tmptable.' GROUP BY score';
Line 2768  sub get_student_scores { Line 2785  sub get_student_scores {
     $sth = $dbh->prepare($request);      $sth = $dbh->prepare($request);
     $sth->execute();      $sth->execute();
     if ($dbh->err) {      if ($dbh->err) {
         &Apache::lonnet::logthis('error = '.$dbh->errstr());          &Apache::lonnet::logthis('error 7 = '.$dbh->errstr());
           &Apache::lonnet::logthis('prepared then executed '.$/.$request);
         return undef;          return undef;
     }      }
     my $dataset = $sth->fetchall_arrayref();      my $dataset = $sth->fetchall_arrayref();
Line 2875  $ENV{'course.'.$cid.'.domain'}, and $ENV Line 2893  $ENV{'course.'.$cid.'.domain'}, and $ENV
   
 Returns a reference to a hash which contains:  Returns a reference to a hash which contains:
  keys    '$sname:$sdom'   keys    '$sname:$sdom'
  values  [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type]   values  [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type,$lockedtype]
   
 The constant values CL_SDOM, CL_SNAME, CL_END, etc. can be used  The constant values CL_SDOM, CL_SNAME, CL_END, etc. can be used
 as indices into the returned list to future-proof clients against  as indices into the returned list to future-proof clients against
Line 2895  sub CL_SECTION  { return 5; } Line 2913  sub CL_SECTION  { return 5; }
 sub CL_FULLNAME { return 6; }  sub CL_FULLNAME { return 6; }
 sub CL_STATUS   { return 7; }  sub CL_STATUS   { return 7; }
 sub CL_TYPE     { return 8; }  sub CL_TYPE     { return 8; }
   sub CL_LOCKEDTYPE   { return 9; }
   
 sub get_classlist {  sub get_classlist {
     my ($cid,$cdom,$cnum) = @_;      my ($cid,$cdom,$cnum) = @_;
Line 2911  sub get_classlist { Line 2930  sub get_classlist {
         }          }
         my ($sname,$sdom) = split(/:/,$student);          my ($sname,$sdom) = split(/:/,$student);
         my @Values = split(/:/,$info);          my @Values = split(/:/,$info);
         my ($end,$start,$id,$section,$fullname,$type);          my ($end,$start,$id,$section,$fullname,$type,$lockedtype);
         if (@Values > 2) {          if (@Values > 2) {
             ($end,$start,$id,$section,$fullname,$type) = @Values;              ($end,$start,$id,$section,$fullname,$type,$lockedtype) = @Values;
         } else { # We have to get the data ourselves          } else { # We have to get the data ourselves
             ($end,$start) = @Values;              ($end,$start) = @Values;
             $section = &Apache::lonnet::getsection($sdom,$sname,$cid);              $section = &Apache::lonnet::getsection($sdom,$sname,$cid);
Line 2950  sub get_classlist { Line 2969  sub get_classlist {
             $status='Active';              $status='Active';
         }          }
         $classlist{$student} =           $classlist{$student} = 
             [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type];              [$sdom,$sname,$end,$start,$id,$section,$fullname,$status,$type,$lockedtype];
     }      }
     if (wantarray()) {      if (wantarray()) {
         return (\%classlist,['domain','username','end','start','id',          return (\%classlist,['domain','username','end','start','id',
                              'section','fullname','status','type']);                               'section','fullname','status','type','lockedtype']);
     } else {      } else {
         return \%classlist;          return \%classlist;
     }      }

Removed from v.1.133  
changed lines
  Added in v.1.139


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