function write_setting($data) {
// $data is a string
- if (!$this->validate($data)) {
- return get_string('validateerror', 'admin');
+ $validated = $this->validate($data);
+ if ($validated !== true) {
+ return $validated;
}
return ($this->config_write($this->name, $data) ? '' : get_string('errorsetting', 'admin'));
}
+ /**
+ * Validate data before storage
+ * @param string data
+ * @return mixed true if ok string if error found
+ */
function validate($data) {
if (is_string($this->paramtype)) {
- return preg_match($this->paramtype, $data);
+ if (preg_match($this->paramtype, $data)) {
+ return true;
+ } else {
+ return get_string('validateerror', 'admin');
+ }
+
} else if ($this->paramtype === PARAM_RAW) {
return true;
+
} else {
- $cleaned = clean_param($data, $this->paramtype);
- return ("$data" == "$cleaned"); // implicit conversion to string is needed to do exact comparison
+ $cleaned = stripslashes(clean_param(addslashes($data), $this->paramtype));
+ if ("$data" == "$cleaned") { // implicit conversion to string is needed to do exact comparison
+ return true;
+ } else {
+ return get_string('validateerror', 'admin');
+ }
}
}
}
function validate($data) {
- $cleaned = stripslashes(clean_param($data, PARAM_MULTILANG));
- if ($cleaned == '') {
- return false; // can not be empty
+ $cleaned = stripslashes(clean_param(addslashes($data), PARAM_MULTILANG));
+ if ($cleaned === '') {
+ return get_string('required');
+ }
+ if ("$data" == "$cleaned") { // implicit conversion to string is needed to do exact comparison
+ return true;
+ } else {
+ return get_string('validateerror', 'admin');
}
- return ($data == $cleaned);
}
function write_setting($data) {
$data = trim($data);
- if (!$this->validate($data)) {
- return get_string('required');
+ $validated = $this->validate($data);
+ if ($validated !== true) {
+ return $validated;
}
$record = new object();