[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonuserutils.pm
raeburn
raeburn at source.lon-capa.org
Thu Jul 4 12:29:50 EDT 2024
raeburn Thu Jul 4 16:29:50 2024 EDT
Modified files: (Branch: version_2_11_X)
/loncom/interface lonuserutils.pm
Log:
- For 2.11
Backport 1.220
Index: loncom/interface/lonuserutils.pm
diff -u loncom/interface/lonuserutils.pm:1.184.4.11 loncom/interface/lonuserutils.pm:1.184.4.12
--- loncom/interface/lonuserutils.pm:1.184.4.11 Thu Jul 4 00:39:16 2024
+++ loncom/interface/lonuserutils.pm Thu Jul 4 16:29:50 2024
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Utility functions for managing LON-CAPA user accounts
#
-# $Id: lonuserutils.pm,v 1.184.4.11 2024/07/04 00:39:16 raeburn Exp $
+# $Id: lonuserutils.pm,v 1.184.4.12 2024/07/04 16:29:50 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -103,7 +103,7 @@
sub modifyuserrole {
my ($context,$setting,$changeauth,$cid,$udom,$uname,$uid,$umode,$upass,
$first,$middle,$last,$gene,$sec,$forceid,$desiredhome,$email,$role,
- $end,$start,$checkid,$inststatus) = @_;
+ $end,$start,$checkid,$inststatus,$emptyok) = @_;
my ($scope,$userresult,$authresult,$roleresult,$idresult);
if ($setting eq 'course' || $context eq 'course') {
$scope = '/'.$cid;
@@ -134,6 +134,25 @@
generation => $gene,
id => $uid,
);
+
+ # When "Update ID in user's course(s)" and "Force change of existing ID"
+ # checkboxes both checked, prevent replacement of name information
+ # in classlist.db file(s) for the user's course(s) with blank(s),
+ # in the case where the uploaded csv file was without column(s) for
+ # the particular field. Fields are: First Name, Middle Names/Initials,
+ # Last Name (or the composite: Last Name, First Names), and Generation.
+
+ my %emptyallowed;
+ if ((ref($emptyok) eq 'HASH') && (keys(%{$emptyok}) > 0)) {
+ %emptyallowed = %{$emptyok};
+ }
+ foreach my $field (keys(%userupdate)) {
+ if ($userupdate{$field} eq '') {
+ unless ($emptyallowed{$field}) {
+ delete($userupdate{$field});
+ }
+ }
+ }
$idresult = &propagate_id_change($uname,$udom,\%userupdate);
}
}
@@ -4290,9 +4309,25 @@
$fieldstype{$field.'_choice'} = 'scalar';
}
&Apache::loncommon::store_course_settings('enrollment_upload',\%fieldstype);
- my ($cid,$crstype,$setting);
+ my ($cid,$crstype,$setting,%emptyok);
if ($context eq 'domain') {
$setting = $env{'form.roleaction'};
+ if (exists($fields{'names'})) {
+ map { $emptyok{$_} = 1; } ('lastname','firstname','middlename');
+ } else {
+ if (exists($fields{'lname'})) {
+ $emptyok{'lastname'} = 1;
+ }
+ if (exists($fields{'fname'})) {
+ $emptyok{'firstname'} = 1;
+ }
+ if (exists($fields{'mname'})) {
+ $emptyok{'middlename'} = 1;
+ }
+ }
+ if (exists($fields{'gen'})) {
+ $emptyok{'generation'} = 1;
+ }
}
if ($env{'request.course.id'} ne '') {
$cid = $env{'request.course.id'};
@@ -4997,7 +5032,7 @@
$mname,$lname,$gen,$singlesec,
$env{'form.forceid'},$desiredhost,
$email,$role,$enddate,$startdate,
- $checkid,$inststatus);
+ $checkid,$inststatus,\%emptyok);
}
}
if ($multiple) {
More information about the LON-CAPA-cvs
mailing list