[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