@@ -626,50 +626,47 @@ sub menuLabels ($c, $hashRef) {
626
626
}
627
627
628
628
sub importUsersFromCSV ($c , $fileName , $replaceExisting , $fallbackPasswordSource , @replaceList ) {
629
- my $ce = $c -> ce;
630
- my $db = $c -> db;
631
- my $dir = $ce -> {courseDirs }{templates };
632
- my $user = $c -> param(' user' );
633
- my $perm = $c -> {userPermission };
629
+ my $ce = $c -> ce;
630
+ my $db = $c -> db;
634
631
635
- die $c -> maketext(" Illegal '/' character in input." ) if $fileName =~ m | /| ;
636
- die $c -> maketext(" File [_1]/[_2] either does not exist or is not readable." , $dir , $fileName )
637
- unless -r " $dir /$fileName " ;
632
+ die $c -> maketext(q{ Illegal '/' character in input.} ) if $fileName =~ m | /| ;
633
+ die $c -> maketext(' File [_1]/[_2] either does not exist or is not readable.' ,
634
+ $ce -> {courseDirs }{templates }, $fileName )
635
+ unless -r " $ce ->{courseDirs}{templates}/$fileName " ;
638
636
639
637
my %allUserIDs = map { $_ => 1 } @{ $c -> {allUserIDs } };
640
638
641
639
my %replaceOK ;
642
- if ($replaceExisting eq ' none' ) {
643
- %replaceOK = ();
644
- } elsif ($replaceExisting eq ' listed' ) {
640
+ if ($replaceExisting eq ' listed' ) {
645
641
%replaceOK = map { $_ => 1 } @replaceList ;
646
642
} elsif ($replaceExisting eq ' any' ) {
647
643
%replaceOK = %allUserIDs ;
648
644
}
649
645
650
646
my $default_permission_level = $ce -> {default_permission_level };
651
647
652
- my (@replaced , @added , @skipped );
648
+ my (@usersToInsert , @passwordsToInsert , @permissionsToInsert ,
649
+ @usersToUpdate , @passwordsToUpdate , @permissionsToUpdate , @skipped );
653
650
654
651
# get list of hashrefs representing lines in classlist file
655
- my @classlist = parse_classlist(" $dir /$fileName " );
652
+ my @classlist = parse_classlist(" $ce ->{courseDirs}{templates} /$fileName " );
656
653
657
654
# Default status is enrolled -- fetch abbreviation for enrolled
658
655
my $default_status_abbrev = $ce -> {statuses }{Enrolled }{abbrevs }[0];
659
656
660
- foreach my $record (@classlist ) {
657
+ for my $record (@classlist ) {
661
658
my %record = %$record ;
662
659
my $user_id = $record {user_id };
663
660
664
661
unless (WeBWorK::DB::check_user_id($user_id )) { # try to catch lines with bad characters
665
662
push @skipped , $user_id ;
666
663
next ;
667
664
}
668
- if ($user_id eq $user ) { # don't replace yourself!!
665
+ if ($user_id eq $c -> param( ' user' )) { # don't replace yourself!!
669
666
push @skipped , $user_id ;
670
667
next ;
671
668
}
672
- if ($record {permission } && $perm < $record {permission }) {
669
+ if ($record {permission } && $c -> { userPermission } < $record {permission }) {
673
670
push @skipped , $user_id ;
674
671
next ;
675
672
}
@@ -681,7 +678,7 @@ sub importUsersFromCSV ($c, $fileName, $replaceExisting, $fallbackPasswordSource
681
678
682
679
# set default status is status field is "empty"
683
680
$record {status } = $default_status_abbrev
684
- unless defined $record {status } and $record {status } ne " " ;
681
+ unless defined $record {status } && $record {status } ne ' ' ;
685
682
686
683
# Determine what to use for the password (if anything).
687
684
if (!$record {password }) {
@@ -697,32 +694,37 @@ sub importUsersFromCSV ($c, $fileName, $replaceExisting, $fallbackPasswordSource
697
694
698
695
# set default permission level if permission level is "empty"
699
696
$record {permission } = $default_permission_level
700
- unless defined $record {permission } and $record {permission } ne " " ;
697
+ unless defined $record {permission } && $record {permission } ne ' ' ;
701
698
702
699
my $User = $db -> newUser(%record );
703
700
my $PermissionLevel = $db -> newPermissionLevel(user_id => $user_id , permission => $record {permission });
704
701
my $Password = $record {password } ? $db -> newPassword(user_id => $user_id , password => $record {password }) : undef ;
705
702
706
703
# DBFIXME use REPLACE
707
704
if (exists $allUserIDs {$user_id }) {
708
- $db -> putUser( $User );
709
- $db -> putPermissionLevel( $PermissionLevel );
710
- $db -> putPassword( $Password ) if $Password ;
705
+ push ( @usersToUpdate , $User );
706
+ push ( @permissionsToUpdate , $PermissionLevel );
707
+ push ( @passwordsToUpdate , $Password ) if $Password ;
711
708
$User -> {permission } = $PermissionLevel -> permission;
712
709
$User -> {passwordExists } = 1 if $Password ;
713
- push @replaced , $User ;
714
710
} else {
715
711
$allUserIDs {$user_id } = 1;
716
- $db -> addUser( $User );
717
- $db -> addPermissionLevel( $PermissionLevel );
718
- $db -> addPassword( $Password ) if $Password ;
712
+ push ( @usersToInsert , $User );
713
+ push ( @permissionsToInsert , $PermissionLevel );
714
+ push ( @passwordsToInsert , $Password ) if $Password ;
719
715
$User -> {permission } = $PermissionLevel -> permission;
720
716
$User -> {passwordExists } = 1 if $Password ;
721
- push @added , $User ;
722
717
}
723
718
}
724
719
725
- return \@replaced , \@added , \@skipped ;
720
+ $db -> User-> insert_records(\@usersToInsert ) if @usersToInsert ;
721
+ $db -> User-> update_records(\@usersToUpdate ) if @usersToUpdate ;
722
+ $db -> Password-> insert_records(\@passwordsToInsert ) if @passwordsToInsert ;
723
+ $db -> Password-> update_records(\@passwordsToUpdate ) if @passwordsToUpdate ;
724
+ $db -> PermissionLevel-> insert_records(\@permissionsToInsert ) if @permissionsToInsert ;
725
+ $db -> PermissionLevel-> update_records(\@permissionsToUpdate ) if @permissionsToUpdate ;
726
+
727
+ return \@usersToUpdate , \@usersToInsert , \@skipped ;
726
728
}
727
729
728
730
sub exportUsersToCSV ($c , $fileName , @userIDsToExport ) {
0 commit comments