Merge pull request #343 from ilosada/1.9.x_phone_field

Add phone field to extra fields - refs #7252
1.9.x
Yannick Warnier 11 years ago
commit 034a5b3f47
  1. 1
      main/auth/profile.php
  2. 17
      main/inc/lib/extra_field.lib.php
  3. 15
      main/inc/lib/formvalidator/FormValidator.class.php
  4. 16
      main/inc/lib/usermanager.lib.php

@ -301,7 +301,6 @@ if (is_profile_editable()) {
} else {
$form->freeze();
}
$user_data = array_merge($user_data, $extra_data);
$form->setDefaults($user_data);

@ -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;
}
}
}

@ -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;
}

@ -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;
}

Loading…
Cancel
Save