diff --git a/main/auth/profile.php b/main/auth/profile.php index 52f1fccb93..0a969b124a 100755 --- a/main/auth/profile.php +++ b/main/auth/profile.php @@ -301,7 +301,6 @@ if (is_profile_editable()) { } else { $form->freeze(); } - $user_data = array_merge($user_data, $extra_data); $form->setDefaults($user_data); diff --git a/main/inc/lib/extra_field.lib.php b/main/inc/lib/extra_field.lib.php index e97011f348..9d927290ca 100755 --- a/main/inc/lib/extra_field.lib.php +++ b/main/inc/lib/extra_field.lib.php @@ -51,6 +51,7 @@ class ExtraField extends Model const FIELD_TYPE_TIMEZONE = 11; const FIELD_TYPE_SOCIAL_PROFILE = 12; const FIELD_TYPE_CHECKBOX = 13; + const FIELD_TYPE_TELEPHONE = 14; public $type = 'user'; //or session or course public $handler_id = 'user_id'; @@ -204,6 +205,7 @@ class ExtraField extends Model $types[self::FIELD_TYPE_TAG] = get_lang('FieldTypeTag'); $types[self::FIELD_TYPE_TIMEZONE] = get_lang('FieldTypeTimezone'); $types[self::FIELD_TYPE_SOCIAL_PROFILE] = get_lang('FieldTypeSocialProfile'); + $types[self::FIELD_TYPE_TELEPHONE] = get_lang('FieldTypeTelephone'); switch ($handler) { case 'course': @@ -1036,6 +1038,21 @@ EOF; $form->freeze('extra_'.$field_details['field_variable']); } break; + case ExtraField::FIELD_TYPE_TELEPHONE: + $form->addElement( + 'text', + 'extra_'.$field_details['field_variable'], + $field_details['field_display_text'], + array('placeholder' => '(xx)xxxxxxxxx') + ); + $form->applyFilter('extra_'.$field_details['field_variable'], 'stripslashes'); + $form->applyFilter('extra_'.$field_details['field_variable'], 'trim'); + $form->applyFilter('extra_'.$field_details['field_variable'], 'telephone'); + $form->addRule('extra_'.$field_details[1], get_lang('TelephoneNumberIsWrong'), 'telephone'); + if ($field_details['field_visible'] == 0) { + $form->freeze('extra_'.$field_details['field_variable']); + } + break; } } } diff --git a/main/inc/lib/formvalidator/FormValidator.class.php b/main/inc/lib/formvalidator/FormValidator.class.php index ba44e940c2..3cd4131dcc 100755 --- a/main/inc/lib/formvalidator/FormValidator.class.php +++ b/main/inc/lib/formvalidator/FormValidator.class.php @@ -150,6 +150,7 @@ class FormValidator extends HTML_QuickForm $this->registerRule('filetype', null, 'HTML_QuickForm_Rule_Filetype', $dir . 'Rule/Filetype.php'); $this->registerRule('multiple_required', 'required', 'HTML_QuickForm_Rule_MultipleRequired', $dir . 'Rule/MultipleRequired.php'); $this->registerRule('url', null, 'HTML_QuickForm_Rule_Url', $dir . 'Rule/Url.php'); + $this->registerRule('telephone', null, 'HTML_QuickForm_Rule_Telephone', $dir . 'Rule/Telephone.php'); $this->registerRule('compare_fields', null, 'HTML_QuickForm_Compare_Fields', $dir . 'Rule/CompareFields.php'); $this->registerRule('CAPTCHA', 'rule', 'HTML_QuickForm_Rule_CAPTCHA', 'HTML/QuickForm/Rule/CAPTCHA.php'); @@ -638,3 +639,17 @@ function html_filter_student_fullpage($html) { return html_filter($html, STUDENT_HTML_FULLPAGE); } + +/** + * Cleans telephone text + * @param string $telephone Telephone number to clean + * @return string The cleaned telephone number + */ +function telephone_filter($telephone) +{ + $telephone= trim ($telephone,'('); + $telephone= trim ($telephone,')'); + $telephone= ltrim ($telephone,'+'); + $telephone= ltrim ($telephone,'0'); + return $telephone; +} \ No newline at end of file diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index ca22cae77f..725dbf55ba 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -30,6 +30,7 @@ class UserManager const USER_FIELD_TYPE_TIMEZONE = 11; const USER_FIELD_TYPE_SOCIAL_PROFILE = 12; const USER_FIELD_TYPE_FILE = 13; + const USER_FIELD_TYPE_TELEPHONE = 14; /** * The default constructor only instanciates an empty user object @@ -4556,6 +4557,20 @@ EOF; $form->freeze($extra_field); } break; + + case self::USER_FIELD_TYPE_TELEPHONE: + $form->addElement('text', 'extra_'.$field_details[1], $field_details[3]." (".get_lang('TelephonePrefix').")", + array('size' => 40, 'placeholder' => '(xx)xxxxxxxxx')); + $form->applyFilter('extra_'.$field_details[1], 'stripslashes'); + $form->applyFilter('extra_'.$field_details[1], 'trim'); + $form->applyFilter('extra_'.$field_details[1], 'telephone_filter'); + $form->addRule('extra_'.$field_details[1], get_lang('TelephoneNumberIsWrong'), 'telephone'); + if (!$admin_permissions) { + if ($field_details[7] == 0) { + $form->freeze('extra_'.$field_details[1]); + } + } + break; } } $return = array(); @@ -4582,6 +4597,7 @@ EOF; $types[self::USER_FIELD_TYPE_TIMEZONE] = get_lang('FieldTypeTimezone'); $types[self::USER_FIELD_TYPE_SOCIAL_PROFILE] = get_lang('FieldTypeSocialProfile'); $types[self::USER_FIELD_TYPE_FILE] = get_lang('FieldTypeFile'); + $types[self::USER_FIELD_TYPE_TELEPHONE] = get_lang('FieldTypeTelephone'); return $types; }