@@ -30,11 +30,12 @@ use Time::localtime;
3030
3131use WeBWorK::CourseEnvironment;
3232use WeBWorK::Debug;
33- use WeBWorK::Utils qw( cryptPassword trim_spaces) ;
34- use WeBWorK::Utils::CourseIntegrityCheck;
33+ use WeBWorK::Utils qw( cryptPassword trim_spaces) ;
3534use WeBWorK::Utils::CourseManagement qw( addCourse renameCourse retitleCourse deleteCourse listCourses archiveCourse
3635 unarchiveCourse initNonNativeTables) ;
3736use WeBWorK::Utils::Logs qw( writeLog) ;
37+ use WeBWorK::Utils::CourseDBIntegrityCheck;
38+ use WeBWorK::Utils::CourseDirectoryIntegrityCheck qw( checkCourseDirectories updateCourseDirectories) ;
3839use WeBWorK::DB;
3940
4041sub pre_header_initialize ($c ) {
@@ -513,7 +514,7 @@ sub rename_course_confirm ($c) {
513514 ) unless $c -> param(' rename_newCourseID_checkbox' );
514515
515516 if ($ce2 -> {dbLayoutName }) {
516- my $CIchecker = WeBWorK::Utils::CourseIntegrityCheck -> new(ce => $ce2 );
517+ my $CIchecker = WeBWorK::Utils::CourseDBIntegrityCheck -> new($ce2 );
517518
518519 # Check database
519520 my ($tables_ok , $dbStatus ) = $CIchecker -> checkCourseTables($rename_oldCourseID );
@@ -523,9 +524,9 @@ sub rename_course_confirm ($c) {
523524 if ($c -> param(' upgrade_course_tables' )) {
524525 my @schema_table_names = keys %$dbStatus ;
525526 my @tables_to_create =
526- grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A } @schema_table_names ;
527+ grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A } @schema_table_names ;
527528 my @tables_to_alter =
528- grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseIntegrityCheck ::DIFFER_IN_A_AND_B }
529+ grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseDBIntegrityCheck ::DIFFER_IN_A_AND_B }
529530 @schema_table_names ;
530531 push (@upgrade_report , $CIchecker -> updateCourseTables($rename_oldCourseID , [@tables_to_create ]));
531532 for my $table_name (@tables_to_alter ) {
@@ -536,7 +537,7 @@ sub rename_course_confirm ($c) {
536537 }
537538
538539 # Check directories
539- my ($directories_ok , $directory_report ) = $CIchecker -> checkCourseDirectories($ce2 );
540+ my ($directories_ok , $directory_report ) = checkCourseDirectories($ce2 );
540541
541542 return $c -> include(
542543 ' ContentGenerator/CourseAdmin/rename_course_confirm' ,
@@ -980,7 +981,7 @@ sub archive_course_confirm ($c) {
980981 my $ce2 = WeBWorK::CourseEnvironment-> new({ courseName => $archive_courseID });
981982
982983 if ($ce2 -> {dbLayoutName }) {
983- my $CIchecker = WeBWorK::Utils::CourseIntegrityCheck -> new(ce => $ce2 );
984+ my $CIchecker = WeBWorK::Utils::CourseDBIntegrityCheck -> new($ce2 );
984985
985986 # Check database
986987 my ($tables_ok , $dbStatus ) = $CIchecker -> checkCourseTables($archive_courseID );
@@ -990,9 +991,9 @@ sub archive_course_confirm ($c) {
990991 if ($c -> param(' upgrade_course_tables' )) {
991992 my @schema_table_names = keys %$dbStatus ;
992993 my @tables_to_create =
993- grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A } @schema_table_names ;
994+ grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A } @schema_table_names ;
994995 my @tables_to_alter =
995- grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseIntegrityCheck ::DIFFER_IN_A_AND_B }
996+ grep { $dbStatus -> {$_ }-> [0] == WeBWorK::Utils::CourseDBIntegrityCheck ::DIFFER_IN_A_AND_B }
996997 @schema_table_names ;
997998 push (@upgrade_report , $CIchecker -> updateCourseTables($archive_courseID , [@tables_to_create ]));
998999 for my $table_name (@tables_to_alter ) {
@@ -1003,8 +1004,8 @@ sub archive_course_confirm ($c) {
10031004 }
10041005
10051006 # Update and check directories.
1006- my $dir_update_messages = $c -> param(' upgrade_course_tables' ) ? $CIchecker -> updateCourseDirectories : [];
1007- my ($directories_ok , $directory_report ) = $CIchecker -> checkCourseDirectories($ce2 );
1007+ my $dir_update_messages = $c -> param(' upgrade_course_tables' ) ? updateCourseDirectories( $ce2 ) : [];
1008+ my ($directories_ok , $directory_report ) = checkCourseDirectories($ce2 );
10081009
10091010 return $c -> include(
10101011 ' ContentGenerator/CourseAdmin/archive_course_confirm' ,
@@ -1349,7 +1350,7 @@ sub upgrade_course_confirm ($c) {
13491350 my $ce2 = WeBWorK::CourseEnvironment-> new({ courseName => $upgrade_courseID });
13501351
13511352 # Create integrity checker
1352- my $CIchecker = WeBWorK::Utils::CourseIntegrityCheck -> new(ce => $ce2 );
1353+ my $CIchecker = WeBWorK::Utils::CourseDBIntegrityCheck -> new($ce2 );
13531354
13541355 # Report on database status
13551356 my ($tables_ok , $dbStatus ) = $CIchecker -> checkCourseTables($upgrade_courseID );
@@ -1428,7 +1429,7 @@ sub upgrade_course_confirm ($c) {
14281429 }
14291430
14301431 # Report on directory status
1431- my ($directories_ok , $directory_report ) = $CIchecker -> checkCourseDirectories;
1432+ my ($directories_ok , $directory_report ) = checkCourseDirectories( $ce2 ) ;
14321433 push (@$course_output , $c -> tag(' div' , class => ' mb-2' , $c -> maketext(' Directory structure:' )));
14331434 push (
14341435 @$course_output ,
@@ -1480,15 +1481,16 @@ sub do_upgrade_course ($c) {
14801481 my $ce2 = WeBWorK::CourseEnvironment-> new({ courseName => $upgrade_courseID });
14811482
14821483 # Create integrity checker
1483- my $CIchecker = WeBWorK::Utils::CourseIntegrityCheck -> new(ce => $ce2 );
1484+ my $CIchecker = WeBWorK::Utils::CourseDBIntegrityCheck -> new($ce2 );
14841485
14851486 # Add missing tables and missing fields to existing tables
14861487 my ($tables_ok , $dbStatus ) = $CIchecker -> checkCourseTables($upgrade_courseID );
14871488 my @schema_table_names = keys %$dbStatus ;
14881489 my @tables_to_create =
1489- grep { $dbStatus -> {$_ }[0] == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A } @schema_table_names ;
1490+ grep { $dbStatus -> {$_ }[0] == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A } @schema_table_names ;
14901491 my @tables_to_alter =
1491- grep { $dbStatus -> {$_ }[0] == WeBWorK::Utils::CourseIntegrityCheck::DIFFER_IN_A_AND_B } @schema_table_names ;
1492+ grep { $dbStatus -> {$_ }[0] == WeBWorK::Utils::CourseDBIntegrityCheck::DIFFER_IN_A_AND_B }
1493+ @schema_table_names ;
14921494
14931495 my @upgrade_report ;
14941496 push (
@@ -1540,8 +1542,8 @@ sub do_upgrade_course ($c) {
15401542 }
15411543
15421544 # Add missing directories and prepare report on directory status
1543- my $dir_update_messages = $CIchecker -> updateCourseDirectories; # Needs more error messages
1544- my ($directories_ok , $directory_report ) = $CIchecker -> checkCourseDirectories;
1545+ my $dir_update_messages = updateCourseDirectories( $ce2 ) ; # Needs more error messages
1546+ my ($directories_ok , $directory_report ) = checkCourseDirectories( $ce2 ) ;
15451547
15461548 # Show status
15471549 my $course_report = $c -> c;
@@ -2650,32 +2652,32 @@ sub do_registration ($c) {
26502652# Format a list of tables and fields in the database, and the status of each.
26512653sub formatReportOnDatabaseTables ($c , $dbStatus , $courseID = undef ) {
26522654 my %table_status_message = (
2653- WeBWorK::Utils::CourseIntegrityCheck ::SAME_IN_A_AND_B =>
2655+ WeBWorK::Utils::CourseDBIntegrityCheck ::SAME_IN_A_AND_B =>
26542656 $c -> tag(' span' , class => ' text-success me-2' , $c -> maketext(' Table is ok' )),
2655- WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A => $c -> tag(
2657+ WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A => $c -> tag(
26562658 ' span' ,
26572659 class => ' text-danger me-2' ,
26582660 $c -> maketext(' Table defined in schema but missing in database' )
26592661 ),
2660- WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_B => $c -> tag(
2662+ WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_B => $c -> tag(
26612663 ' span' ,
26622664 class => ' text-danger me-2' ,
26632665 $c -> maketext(' Table defined in database but missing in schema' )
26642666 ),
2665- WeBWorK::Utils::CourseIntegrityCheck ::DIFFER_IN_A_AND_B => $c -> tag(
2667+ WeBWorK::Utils::CourseDBIntegrityCheck ::DIFFER_IN_A_AND_B => $c -> tag(
26662668 ' span' ,
26672669 class => ' text-danger me-2' ,
26682670 $c -> maketext(' Schema and database table definitions do not agree' )
26692671 )
26702672 );
26712673 my %field_status_message = (
2672- WeBWorK::Utils::CourseIntegrityCheck ::SAME_IN_A_AND_B =>
2674+ WeBWorK::Utils::CourseDBIntegrityCheck ::SAME_IN_A_AND_B =>
26732675 $c -> tag(' span' , class => ' text-success me-2' , $c -> maketext(' Field is ok' )),
2674- WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A =>
2676+ WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A =>
26752677 $c -> tag(' span' , class => ' text-danger me-2' , $c -> maketext(' Field missing in database' )),
2676- WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_B =>
2678+ WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_B =>
26772679 $c -> tag(' span' , class => ' text-danger me-2' , $c -> maketext(' Field missing in schema' )),
2678- WeBWorK::Utils::CourseIntegrityCheck ::DIFFER_IN_A_AND_B => $c -> tag(
2680+ WeBWorK::Utils::CourseDBIntegrityCheck ::DIFFER_IN_A_AND_B => $c -> tag(
26792681 ' span' ,
26802682 class => ' text-danger me-2' ,
26812683 $c -> maketext(' Schema and database field definitions do not agree' )
@@ -2695,9 +2697,9 @@ sub formatReportOnDatabaseTables ($c, $dbStatus, $courseID = undef) {
26952697 my $table_status = $dbStatus -> {$table }[0];
26962698 push (@$table_report , $table . ' : ' , $table_status_message {$table_status });
26972699
2698- if ($table_status == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A) {
2700+ if ($table_status == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A) {
26992701 $all_tables_ok = 0;
2700- } elsif ($table_status == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_B) {
2702+ } elsif ($table_status == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_B) {
27012703 $extra_database_tables = 1;
27022704 push (
27032705 @$table_report ,
@@ -2712,45 +2714,43 @@ sub formatReportOnDatabaseTables ($c, $dbStatus, $courseID = undef) {
27122714 )
27132715 )
27142716 ) if defined $courseID ;
2715- } elsif ($table_status == WeBWorK::Utils::CourseIntegrityCheck ::DIFFER_IN_A_AND_B) {
2717+ } elsif ($table_status == WeBWorK::Utils::CourseDBIntegrityCheck ::DIFFER_IN_A_AND_B) {
27162718 my %fieldInfo = %{ $dbStatus -> {$table }[1] };
27172719 my $fields_report = $c -> c;
27182720
27192721 for my $key (keys %fieldInfo ) {
27202722 my $field_status = $fieldInfo {$key }[0];
27212723 my $field_report = $c -> c(" $key : $field_status_message {$field_status }" );
27222724
2723- if ($field_status == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_B) {
2725+ if ($field_status == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_B) {
27242726 if ($fieldInfo {$key }[1]) {
27252727 $rebuild_table_indexes = 1;
27262728 } else {
27272729 $extra_database_fields = 1;
27282730 }
2729- if (defined $courseID ) {
2730- if ($fieldInfo {$key }[1]) {
2731- push (@$field_report , $c -> hidden_field(" $courseID .$table .delete_fieldIDs" => $key ));
2732- } else {
2733- push (
2734- @$field_report ,
2731+ if ($fieldInfo {$key }[1]) {
2732+ push (@$field_report , $c -> hidden_field(" $courseID .$table .delete_fieldIDs" => $key ));
2733+ } else {
2734+ push (
2735+ @$field_report ,
2736+ $c -> tag(
2737+ ' span' ,
2738+ class => ' form-check d-inline-block' ,
27352739 $c -> tag(
2736- ' span' ,
2737- class => ' form-check d-inline-block' ,
2738- $c -> tag(
2739- ' label' ,
2740- class => ' form-check-label' ,
2741- $c -> c(
2742- $c -> check_box(
2743- " $courseID .$table .delete_fieldIDs" => $key ,
2744- class => ' form-check-input'
2745- ),
2746- $c -> maketext(' Delete field when upgrading' )
2747- )-> join (' ' )
2748- )
2740+ ' label' ,
2741+ class => ' form-check-label' ,
2742+ $c -> c(
2743+ $c -> check_box(
2744+ " $courseID .$table .delete_fieldIDs" => $key ,
2745+ class => ' form-check-input'
2746+ ),
2747+ $c -> maketext(' Delete field when upgrading' )
2748+ )-> join (' ' )
27492749 )
2750- );
2751- }
2750+ )
2751+ );
27522752 }
2753- } elsif ($field_status == WeBWorK::Utils::CourseIntegrityCheck ::ONLY_IN_A) {
2753+ } elsif ($field_status == WeBWorK::Utils::CourseDBIntegrityCheck ::ONLY_IN_A) {
27542754 $all_tables_ok = 0;
27552755 }
27562756 push (@$fields_report , $c -> tag(' li' , $field_report -> join (' ' )));
0 commit comments