diff --git a/main/inc/lib/extra_field.lib.php b/main/inc/lib/extra_field.lib.php index 26fdd02e15..4687bae4ec 100755 --- a/main/inc/lib/extra_field.lib.php +++ b/main/inc/lib/extra_field.lib.php @@ -61,6 +61,8 @@ class ExtraField extends Model const FIELD_TYPE_FLOAT = 17; const FIELD_TYPE_FILE = 18; const FIELD_TYPE_VIDEO_URL = 19; + const FIELD_TYPE_LETTERS_ONLY = 20; + const FIELD_TYPE_ALPHANUMERIC = 21; public $type = 'user'; public $pageName; @@ -335,6 +337,8 @@ class ExtraField extends Model $types[self::FIELD_TYPE_FLOAT] = get_lang('FieldTypeFloat'); $types[self::FIELD_TYPE_FILE] = get_lang('FieldTypeFile'); $types[self::FIELD_TYPE_VIDEO_URL] = get_lang('FieldTypeVideoUrl'); + $types[self::FIELD_TYPE_LETTERS_ONLY] = get_lang('FieldTypeAlphabetic'); + $types[self::FIELD_TYPE_ALPHANUMERIC] = get_lang('FieldTypeAlphanumeric'); switch ($handler) { case 'course': @@ -1442,6 +1446,57 @@ EOF; ['placeholder' => 'https://'] ); break; + case ExtraField::FIELD_TYPE_LETTERS_ONLY: + $form->addElement( + 'text', + 'extra_'.$field_details['variable'], + $field_details['display_text'], + [ + 'pattern' => '[a-zA-Z]+', + 'title' => get_lang('OnlyLetters') + ] + ); + $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); + $form->applyFilter('extra_'.$field_details['variable'], 'trim'); + $form->addRule( + 'extra_'.$field_details['variable'], + get_lang('OnlyLetters'), + 'lettersonly' + ); + + if (!$admin_permissions) { + if ($field_details['visible'] == 0) { + $form->freeze( + 'extra_'.$field_details['variable'] + ); + } + } + break; + case ExtraField::FIELD_TYPE_ALPHANUMERIC: + $form->addElement( + 'text', + 'extra_'.$field_details['variable'], + $field_details['display_text'], + [ + 'pattern' => '[a-zA-Z0-9]+', + 'title' => get_lang('OnlyLettersAndNumbers') + ] + ); + $form->applyFilter('extra_'.$field_details['variable'], 'stripslashes'); + $form->applyFilter('extra_'.$field_details['variable'], 'trim'); + $form->addRule( + 'extra_'.$field_details['variable'], + get_lang('OnlyLettersAndNumbers'), + 'alphanumeric' + ); + if (!$admin_permissions) { + if ($field_details['visible'] == 0) { + $form->freeze( + 'extra_'.$field_details['variable'] + ); + } + } + break; } } }