From d47b972fa991d4aaf2e8bf654e59317e6f1fe63d Mon Sep 17 00:00:00 2001 From: David Mudrak Date: Wed, 19 Jan 2011 19:14:00 +0100 Subject: [PATCH] MDL-26061 Prevent fatal error in remote enrolment client when there are no roaming users --- mnet/service/enrol/index.php | 8 ++++++++ mnet/service/enrol/lang/en/mnetservice_enrol.php | 1 + mnet/service/enrol/locallib.php | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/mnet/service/enrol/index.php b/mnet/service/enrol/index.php index 53e18c4e7c0..221a28fa13a 100644 --- a/mnet/service/enrol/index.php +++ b/mnet/service/enrol/index.php @@ -40,6 +40,14 @@ if (!$service->is_available()) { die(); } +$roamingusers = get_users_by_capability(get_system_context(), 'moodle/site:mnetlogintoremote', 'u.id'); +if (empty($roamingusers)) { + $capname = get_string('site:mnetlogintoremote', 'role'); + $url = new moodle_url('/admin/roles/manage.php'); + echo notice(get_string('noroamingusers', 'mnetservice_enrol', $capname), $url); +} +unset($roamingusers); + // remote hosts that may publish remote enrolment service and we are subscribed to it $hosts = $service->get_remote_publishers(); diff --git a/mnet/service/enrol/lang/en/mnetservice_enrol.php b/mnet/service/enrol/lang/en/mnetservice_enrol.php index 461f77792ec..2a0f4798f8c 100644 --- a/mnet/service/enrol/lang/en/mnetservice_enrol.php +++ b/mnet/service/enrol/lang/en/mnetservice_enrol.php @@ -33,6 +33,7 @@ $string['hostappname'] = 'Application'; $string['hostname'] = 'Host name'; $string['hosturl'] = 'Remote host URL'; $string['nopublishers'] = 'No remote peers available.'; +$string['noroamingusers'] = 'Users need capability \'{$a}\' to be enrolled to remote courses. No users with such capability were found. Click the continue button to assign the required capability to some roles at your site.'; $string['otherenrolledusers'] = 'Other enrolled users'; $string['pluginname'] = 'Remote enrolment service'; $string['refetch'] = 'Re-fetch up to date state from remote hosts'; diff --git a/mnet/service/enrol/locallib.php b/mnet/service/enrol/locallib.php index b0c260a4c60..ffe7e6de116 100644 --- a/mnet/service/enrol/locallib.php +++ b/mnet/service/enrol/locallib.php @@ -552,6 +552,10 @@ class mnetservice_enrol_potential_users_selector extends user_selector_base { $systemcontext = get_system_context(); $userids = get_users_by_capability($systemcontext, 'moodle/site:mnetlogintoremote', 'u.id'); + if (empty($userids)) { + return array(); + } + list($usql, $uparams) = $DB->get_in_or_equal(array_keys($userids), SQL_PARAMS_NAMED, 'uid0000'); list($wherecondition, $params) = $this->search_sql($search, 'u');