Diff for /loncom/interface/loncoursedata.pm between versions 1.195 and 1.198

version 1.195, 2013/12/09 21:33:32 version 1.198, 2016/04/26 13:51:38
Line 1251  sub ensure_current_data { Line 1251  sub ensure_current_data {
     }      }
   
     my $student_id = &get_student_id($sname,$sdom);      my $student_id = &get_student_id($sname,$sdom);
       &get_students_groupids($student_id);
     my @Result = &Apache::lonmysql::get_rows($student_table,      my @Result = &Apache::lonmysql::get_rows($student_table,
                                              "student_id ='$student_id'");                                               "student_id ='$student_id'");
     my $data = undef;      my $data = undef;
Line 1277  sub ensure_current_full_data { Line 1278  sub ensure_current_full_data {
         ($sdom,$sname,$courseid.'.db',$getuserdir);          ($sdom,$sname,$courseid.'.db',$getuserdir);
     #      #
     my $student_id = &get_student_id($sname,$sdom);      my $student_id = &get_student_id($sname,$sdom);
       &get_students_groupids($student_id);
     my @Result = &Apache::lonmysql::get_rows($student_table,      my @Result = &Apache::lonmysql::get_rows($student_table,
                                              "student_id ='$student_id'");                                               "student_id ='$student_id'");
     my $updatetime;      my $updatetime;
Line 1289  sub ensure_current_full_data { Line 1291  sub ensure_current_full_data {
     return $status;      return $status;
 }  }
   
   sub ensure_current_groups {
       my ($courseid) = @_;  
       my ($cdom,$cnum);
       if (defined($courseid)) {
           my %coursehash = &Apache::lonnet::coursedescription($courseid);
           $cdom = $coursehash{'domain'};
           $cnum = $coursehash{'num'};
       } elsif ($env{'request.course.id'}) {
           $courseid = $env{'request.course.id'};
           $cdom = $env{'course.'.$courseid.'.domain'};
           $cnum = $env{'course.'.$courseid.'.num'};
       }
       if ($cdom eq '' || $cnum eq '') {
           return 'error: invalid course';
       }
       &setup_table_names($courseid);
       my @CurrentTables = &Apache::lonmysql::tables_in_db();
       unless (grep(/^\Q$groupnames_table\E$/,@CurrentTables)) {
           return;
       }
       # Get the update time for the groupnames table
       my $getuserdir = 1;
       my $modifiedtime = &Apache::lonnet::GetFileTimestamp
           ($cdom,$cnum,'coursegroups.db',$getuserdir);
       my %tableinfo = &Apache::lonmysql::table_information($groupnames_table);
       my $updatetime;
       if ($tableinfo{'Update_time'}) {
           $updatetime = $tableinfo{'Update_time'};
       }
       if (! defined($updatetime) || $modifiedtime > $updatetime) {
           my (%groups_in_sql,%removegroups,$addgroup);
           my %curr_groups = &Apache::longroup::coursegroups($cdom,$cnum);
           my @Result = &Apache::lonmysql::get_rows($groupnames_table);
           foreach my $row (@Result) {
               my ($id,$name) = @{$row};
               unless (exists($curr_groups{$name})) {
                   $groups_in_sql{$name}=$id;
               } elsif ($id) {
                   $removegroups{$id} = $name;
               }
           }
           foreach my $group (keys(%curr_groups)) {
               unless (exists($groups_in_sql{$group})) {
                   $addgroup = 1;
                   last;
               }
           }
           if (keys(%removegroups)) {
               my $dbh = &Apache::lonmysql::get_dbh();
               foreach my $group_id (keys(%removegroups)) {
                   my $command = 'DELETE FROM '.$groupnames_table.' WHERE group_id='.
                                 $group_id;
                   $dbh->do($command);
                   if ($dbh->err()) {
                       &Apache::lonnet::logthis("error ".$dbh->errstr().
                                                " occurred executing \n".
                                                "SQL command: $command");
                   }
               }
           }
           if ($addgroup) {
               &populate_groupnames_table($courseid);
           }
       }
       return;
   }
   
   sub ensure_current_students_groups {
       my ($courseid) = @_;
       my ($cdom,$cnum);
       if (defined($courseid)) {
           my %coursehash = &Apache::lonnet::coursedescription($courseid);
           $cdom = $coursehash{'domain'};
           $cnum = $coursehash{'num'};
       } elsif ($env{'request.course.id'}) {
           $courseid = $env{'request.course.id'};
           $cdom = $env{'course.'.$courseid.'.domain'};
           $cnum = $env{'course.'.$courseid.'.num'};
       }
       &setup_table_names($courseid);
       my @CurrentTables = &Apache::lonmysql::tables_in_db();
       unless (grep(/^\Q$students_groups_table\E$/,@CurrentTables)) {
           return;
       }
       # Get the update time for the groupnames table
       my $getuserdir = 1;
       my $modifiedtime = &Apache::lonnet::GetFileTimestamp
           ($cdom,$cnum,'groupmembership.db',$getuserdir);
       my %tableinfo = &Apache::lonmysql::table_information($students_groups_table);
       my $updatetime;
       if ($tableinfo{'Update_time'}) {
           $updatetime = $tableinfo{'Update_time'};
       }
       if ((!defined($updatetime)) || ($modifiedtime > $updatetime)) {
           if (&Apache::lonmysql::drop_table($students_groups_table)) {
               if (&init_dbs($courseid)) {
                   return "error creating $students_groups_table\n";
               } else {
                   &populate_students_groups_table($courseid);
               }
           }
       }
       return;
   }
   
 sub get_student_data_from_performance_cache {  sub get_student_data_from_performance_cache {
     my ($sname,$sdom,$symb,$courseid)=@_;      my ($sname,$sdom,$symb,$courseid)=@_;
Line 2987  Inputs: $starttime, $endtime, $table Line 3093  Inputs: $starttime, $endtime, $table
 Returns: $time_limits  Returns: $time_limits
   
   
 =item C<&limit_by_section_and_status()C<  =item C<&limit_by_section_and_status()C>
   
 Build SQL WHERE condition which limits the data collected by section and  Build SQL WHERE condition which limits the data collected by section and
 student status.  student status.

Removed from v.1.195  
changed lines
  Added in v.1.198


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