From b129859207a7e3989d50e761af0d6c9c176f81c3 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Wed, 5 Mar 2014 10:21:40 +0100 Subject: [PATCH 1/3] MDL-29807 Service add admin page: should be able to enter the unique shortname of a service --- admin/webservice/forms.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin/webservice/forms.php b/admin/webservice/forms.php index dea693b3de7..0b4ff5d087d 100644 --- a/admin/webservice/forms.php +++ b/admin/webservice/forms.php @@ -66,6 +66,10 @@ class external_service_form extends moodleform { $mform->addElement('text', 'name', get_string('name')); $mform->addRule('name', get_string('required'), 'required', null, 'client'); $mform->setType('name', PARAM_TEXT); + + $mform->addElement('text', 'shortname', get_string('shortname'), 'maxlength="255" size="20"'); + $mform->setType('shortname', PARAM_TEXT); + $mform->addElement('advcheckbox', 'enabled', get_string('enabled', 'webservice')); $mform->setType('enabled', PARAM_BOOL); $mform->addElement('advcheckbox', 'restrictedusers', From 0a8ab747284d97f2dabd1fdf536666cde1bb7e1d Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Wed, 5 Mar 2014 10:45:24 +0100 Subject: [PATCH 2/3] 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'; From eb625bcf64903cfa51a62d0a5ea7fb9927443498 Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Mon, 17 Mar 2014 12:35:20 +0100 Subject: [PATCH 3/3] MDL-29807 Fixed invalid add_record_snapshot references and also inexistent check of empty short names --- admin/webservice/forms.php | 9 ++++++--- admin/webservice/service.php | 2 -- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/admin/webservice/forms.php b/admin/webservice/forms.php index 785e115e31d..41c15c25e0d 100644 --- a/admin/webservice/forms.php +++ b/admin/webservice/forms.php @@ -158,9 +158,12 @@ class external_service_form extends moodleform { $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); + // Allow duplicated "empty" shortnames. + if (!empty($data['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); + } } } diff --git a/admin/webservice/service.php b/admin/webservice/service.php index 0abf9d0be02..d99bf58fbc2 100644 --- a/admin/webservice/service.php +++ b/admin/webservice/service.php @@ -84,7 +84,6 @@ if ($mform->is_cancelled()) { 'objectid' => $servicedata->id ); $event = \core\event\webservice_service_created::create($params); - $event->add_record_snapshot('external_services', $servicedata); $event->trigger(); //redirect to the 'add functions to service' page @@ -99,7 +98,6 @@ if ($mform->is_cancelled()) { 'objectid' => $servicedata->id ); $event = \core\event\webservice_service_updated::create($params); - $event->add_record_snapshot('external_services', $servicedata); $event->trigger(); }