* @return mixed true or message string
*/
public function validate($data) {
- global $DB;
+ global $DB, $SITE;
$cleaned = clean_param($data, PARAM_TEXT);
if ($cleaned === '') {
return get_string('required');
}
- if ($this->name ==='shortname' && $DB->record_exists('course', array('shortname' => $data))) {
+ if ($this->name ==='shortname' &&
+ $DB->record_exists_sql('SELECT id from {course} WHERE shortname = ? AND id <> ?', array($data, $SITE->id))) {
return get_string('shortnametaken', 'error', $data);
}
if ("$data" == "$cleaned") { // implicit conversion to string is needed to do exact comparison