{
$this->isAdd = $extra['is_add'];
- $this->fields['username'] = new \IPF_Form_Field_Varchar(array(
+ $this->fields['username'] = new \IPF_Form_Field_Regex(array(
'required' => true,
'max_length' => 32,
'label' => __('Username'),
'help_text' => __('Required. 32 characters or less. Alphanumeric characters only (letters, digits and underscores).'),
+ 'regex' => '/^[a-zA-Z0-9_]{1,32}$/',
));
$this->fields['password1'] = new \IPF_Form_Field_Varchar(array(
--- /dev/null
+<?php
+
+class IPF_Form_Field_Regex extends IPF_Form_Field
+{
+ public $widget = 'IPF_Form_Widget_TextInput';
+ public $regex = '/.*/';
+ public $error_message = null;
+
+ public function clean($value)
+ {
+ parent::clean($value);
+ if (in_array($value, $this->empty_values)) {
+ return '';
+ }
+ if (!preg_match($this->regex, $value)) {
+ $error_message = $this->error_message;
+ if (!$error_message)
+ $error_message = __('Invalid value');
+ throw new IPF_Exception_Form($error_message);
+ }
+ return $value;
+ }
+}
+