From 0a8ab747284d97f2dabd1fdf536666cde1bb7e1d Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Wed, 5 Mar 2014 10:45:24 +0100 Subject: [PATCH] MDL-29807 Control to avoid duplicate shortnames --- admin/webservice/forms.php | 14 ++++++++++++++ lang/en/webservice.php | 1 + 2 files changed, 15 insertions(+) diff --git a/admin/webservice/forms.php b/admin/webservice/forms.php index 0b4ff5d087d..785e115e31d 100644 --- a/admin/webservice/forms.php +++ b/admin/webservice/forms.php @@ -69,6 +69,10 @@ class external_service_form extends moodleform { $mform->addElement('text', 'shortname', get_string('shortname'), 'maxlength="255" size="20"'); $mform->setType('shortname', PARAM_TEXT); + if (!empty($service->id)) { + $mform->hardFreeze('shortname'); + $mform->setConstants('shortname', $service->shortname); + } $mform->addElement('advcheckbox', 'enabled', get_string('enabled', 'webservice')); $mform->setType('enabled', PARAM_BOOL); @@ -149,7 +153,17 @@ class external_service_form extends moodleform { } function validation($data, $files) { + global $DB; + $errors = parent::validation($data, $files); + + // Add field validation check for duplicate shortname. + if ($service = $DB->get_record('external_services', array('shortname' => $data['shortname']), '*', IGNORE_MULTIPLE)) { + if (empty($data['id']) || $service->id != $data['id']) { + $errors['shortname'] = get_string('shortnametaken', 'webservice', $service->name); + } + } + return $errors; } diff --git a/lang/en/webservice.php b/lang/en/webservice.php index 90c8d9e0bdf..568111ebdc3 100644 --- a/lang/en/webservice.php +++ b/lang/en/webservice.php @@ -176,6 +176,7 @@ $string['serviceusers'] = 'Authorised users'; $string['serviceusersettings'] = 'User settings'; $string['serviceusersmatching'] = 'Authorised users matching'; $string['serviceuserssettings'] = 'Change settings for the authorised users'; +$string['shortnametaken'] = 'Short name is already used for another service ({$a})'; $string['simpleauthlog'] = 'Simple authentication login'; $string['step'] = 'Step'; $string['supplyinfo'] = 'More details';