From 25f44c72bdf3b524cda704ab02d380a5fded69b5 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Sat, 29 Jan 2011 15:42:09 +0000 Subject: [PATCH] custom profile fields MDL-26177 fields with unique were broken because you cannot use get_field with TEXT columns. --- user/profile/lib.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/user/profile/lib.php b/user/profile/lib.php index d83271a49dc..05e465533d2 100644 --- a/user/profile/lib.php +++ b/user/profile/lib.php @@ -131,10 +131,14 @@ class profile_field_base { $errors = array(); /// Check for uniqueness of data if required if ($this->is_unique()) { - if ($userid = $DB->get_field('user_info_data', 'userid', array('fieldid'=>$this->field->id, 'data'=>$usernew->{$this->inputname}))) { - if ($userid != $usernew->id) { - $errors["{$this->inputname}"] = get_string('valuealreadyused'); - } + $userid = $DB->get_field_sql(' + SELECT userid + FROM {user_info_data} + WHERE fieldid = ? + AND ' . $DB->sql_compare_text('data') . ' = ?', + array($this->field->id, $usernew->{$this->inputname})); + if ($userid && $userid != $usernew->id) { + $errors[$this->inputname] = get_string('valuealreadyused'); } } return $errors;