MDL-25674 detection of invalid $user parameter when synchronising user enrolments
authorPetr Skoda <info@skodak.org>
Thu, 16 Dec 2010 08:33:50 +0000 (09:33 +0100)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Mon, 20 Dec 2010 13:41:18 +0000 (14:41 +0100)
enrol/database/lib.php
enrol/ldap/lib.php

index d877c30..a40c807 100644 (file)
@@ -81,6 +81,15 @@ class enrol_database_plugin extends enrol_plugin {
 
         $ignorehidden     = $this->get_config('ignorehiddencourses');
 
+        if (!is_object($user) or !property_exists($user, 'id')) {
+            throw new coding_exception('Invalid $user parameter in sync_user_enrolments()');
+        }
+
+        if (!property_exists($user, $localuserfield)) {
+            debugging('Invalid $user parameter in sync_user_enrolments(), missing '.$localuserfield);
+            $user = $DB->get_record('user', array('id'=>$user->id));
+        }
+
         // create roles mapping
         $allroles = get_all_roles();
         if (!isset($allroles[$defaultrole])) {
index 04472b0..d16ab6c 100644 (file)
@@ -136,6 +136,15 @@ class enrol_ldap_plugin extends enrol_plugin {
             return;
         }
 
+        if (!is_object($user) or !property_exists($user, 'id')) {
+            throw new coding_exception('Invalid $user parameter in sync_user_enrolments()');
+        }
+
+        if (!property_exists($user, 'idnumbner')) {
+            debugging('Invalid $user parameter in sync_user_enrolments(), missing idnumber');
+            $user = $DB->get_record('user', array('id'=>$user->id));
+        }
+
         // We may need a lot of memory here
         @set_time_limit(0);
         raise_memory_limit(MEMORY_HUGE);