From 5720f3587039f1ff0143981f2b0d0fea2e431b60 Mon Sep 17 00:00:00 2001 From: Imanol Losada Date: Fri, 29 Aug 2014 12:58:50 -0500 Subject: [PATCH 1/3] Add support for phone numbers to extra fields - refs #7252 --- main/auth/profile.php | 2 +- main/inc/lib/extra_field.lib.php | 13 +++++++++++++ .../inc/lib/formvalidator/FormValidator.class.php | 15 +++++++++++++++ main/inc/lib/usermanager.lib.php | 15 +++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/main/auth/profile.php b/main/auth/profile.php index 52f1fccb93..939aedc330 100755 --- a/main/auth/profile.php +++ b/main/auth/profile.php @@ -301,7 +301,7 @@ if (is_profile_editable()) { } else { $form->freeze(); } - +var_dump($extra_data); $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..31be657b2a 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,17 @@ 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('TelephoneWrong'), '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..59e7ffa77d 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 to clean + * @return string The cleaned telephone + */ +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..41e87930df 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,19 @@ 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('TelephoneWrong'), 'telephone'); + if (!$admin_permissions) { + if ($field_details[7] == 0) + $form->freeze('extra_'.$field_details[1]); + } + break; } } $return = array(); @@ -4582,6 +4596,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; } From 0efba356d6ea80e242ee044ce2d1a8f71e172197 Mon Sep 17 00:00:00 2001 From: Imanol Losada Date: Fri, 29 Aug 2014 13:05:12 -0500 Subject: [PATCH 2/3] Fix typo in previous commit - refs #7252 --- main/auth/profile.php | 1 - 1 file changed, 1 deletion(-) diff --git a/main/auth/profile.php b/main/auth/profile.php index 939aedc330..0a969b124a 100755 --- a/main/auth/profile.php +++ b/main/auth/profile.php @@ -301,7 +301,6 @@ if (is_profile_editable()) { } else { $form->freeze(); } -var_dump($extra_data); $user_data = array_merge($user_data, $extra_data); $form->setDefaults($user_data); From 31bf6d313157a7da46359acef3239b8437602394 Mon Sep 17 00:00:00 2001 From: Imanol Losada Date: Fri, 29 Aug 2014 13:19:02 -0500 Subject: [PATCH 3/3] Fix more typos in previous commit - refs #7252 --- main/inc/lib/extra_field.lib.php | 12 ++++++++---- main/inc/lib/formvalidator/FormValidator.class.php | 4 ++-- main/inc/lib/usermanager.lib.php | 5 +++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/main/inc/lib/extra_field.lib.php b/main/inc/lib/extra_field.lib.php index 31be657b2a..9d927290ca 100755 --- a/main/inc/lib/extra_field.lib.php +++ b/main/inc/lib/extra_field.lib.php @@ -1038,13 +1038,17 @@ 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')); + 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('TelephoneWrong'), 'telephone'); + $form->addRule('extra_'.$field_details[1], get_lang('TelephoneNumberIsWrong'), 'telephone'); if ($field_details['field_visible'] == 0) { $form->freeze('extra_'.$field_details['field_variable']); } diff --git a/main/inc/lib/formvalidator/FormValidator.class.php b/main/inc/lib/formvalidator/FormValidator.class.php index 59e7ffa77d..3cd4131dcc 100755 --- a/main/inc/lib/formvalidator/FormValidator.class.php +++ b/main/inc/lib/formvalidator/FormValidator.class.php @@ -642,8 +642,8 @@ function html_filter_student_fullpage($html) /** * Cleans telephone text - * @param string $telephone Telephone to clean - * @return string The cleaned telephone + * @param string $telephone Telephone number to clean + * @return string The cleaned telephone number */ function telephone_filter($telephone) { diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index 41e87930df..725dbf55ba 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -4564,10 +4564,11 @@ EOF; $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('TelephoneWrong'), 'telephone'); + $form->addRule('extra_'.$field_details[1], get_lang('TelephoneNumberIsWrong'), 'telephone'); if (!$admin_permissions) { - if ($field_details[7] == 0) + if ($field_details[7] == 0) { $form->freeze('extra_'.$field_details[1]); + } } break; }