From 8e490af8f2d763a5da1d21f18a968bc794a354fb Mon Sep 17 00:00:00 2001
From: Roger Feese <rfeese@unl.edu>
Date: Thu, 24 Aug 2017 14:21:15 -0500
Subject: [PATCH] Check for existence of course before importing enrollment or
 staff assignment.

---
 include/functions.inc.php | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/include/functions.inc.php b/include/functions.inc.php
index e66d1cb..e2bc61d 100644
--- a/include/functions.inc.php
+++ b/include/functions.inc.php
@@ -776,12 +776,14 @@ function load_enrol($db, $filesBaseDir)
             );
 
             $findPeople = "SELECT nuid FROM people WHERE nuid = ?";
-            $findEnrol = "SELECT enrollment_id FROM enrollments WHERE course_id = ? AND nuid = ?";
+	    $findEnrol = "SELECT enrollment_id FROM enrollments WHERE course_id = ? AND nuid = ?";
+	    $findCourse = "SELECT course_id FROM courses WHERE course_id = ?";
 
             $existingPerson = $db->GetOne($findPeople, array($nuid));
-            $existingEnrol = $db->GetOne($findEnrol, array($courseId, $nuid));
+	    $existingEnrol = $db->GetOne($findEnrol, array($courseId, $nuid));
+	    $existingCourse = $db->GetOne($findCourse, array($courseId));
 
-            if ($lineItems[2] != 'W') {
+            if ($existingCourse && $lineItems[2] != 'W') {
                 if ( !$existingPerson)
                 {
                     import_person_from_ldap($nuid);
@@ -832,23 +834,28 @@ function load_staff($db, $filesBaseDir)
             );
 
             $findPeople = "SELECT nuid FROM people WHERE nuid = ?";
-            $findStaff = "SELECT assignment_id FROM staff_assignments WHERE course_id = ? AND nuid = ?";
+	    $findStaff = "SELECT assignment_id FROM staff_assignments WHERE course_id = ? AND nuid = ?";
+            $findCourse = "SELECT course_id FROM courses WHERE course_id = ?";
 
             $existingPerson = $db->GetOne($findPeople, array($nuid));
-            $existingStaff = $db->GetOne($findStaff, array($courseId, $nuid));
+	    $existingStaff = $db->GetOne($findStaff, array($courseId, $nuid));
+            $existingCourse = $db->GetOne($findCourse, array($courseId));
 
-            if ( !$existingPerson )
+	    if ( $existingCourse )
             {
-                import_person_from_ldap($nuid);
-            }
+                if ( !$existingPerson )
+                {
+                    import_person_from_ldap($nuid);
+                }
 
-            if ($existingStaff)
-            {
-               auto_update($db, 'staff_assignments', $staffData, 'assignment_id', $existingStaff['assignment_id']);
-            }
-            else if ($existingPerson)
-            {
-                auto_insert($db, 'staff_assignments', $staffData);
+                if ($existingStaff)
+                {
+                   auto_update($db, 'staff_assignments', $staffData, 'assignment_id', $existingStaff['assignment_id']);
+                }
+                else if ($existingPerson)
+                {
+                    auto_insert($db, 'staff_assignments', $staffData);
+		}
             }
         }
         fclose($handle);
-- 
GitLab