aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_profile_fields.php
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2004-06-15 18:01:59 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2004-06-15 18:01:59 +0000
commit5cb3baf33b4bea77d26ae38fdc049ab28ef3133e (patch)
treea33eb58b61d6affcf55904e123d88221fa681e0d /phpBB/includes/functions_profile_fields.php
parent8022b6f6b21017d2016121c41f48a15fdbc9a404 (diff)
downloadforums-5cb3baf33b4bea77d26ae38fdc049ab28ef3133e.tar
forums-5cb3baf33b4bea77d26ae38fdc049ab28ef3133e.tar.gz
forums-5cb3baf33b4bea77d26ae38fdc049ab28ef3133e.tar.bz2
forums-5cb3baf33b4bea77d26ae38fdc049ab28ef3133e.tar.xz
forums-5cb3baf33b4bea77d26ae38fdc049ab28ef3133e.zip
- for bart to work on...
git-svn-id: file:///svn/phpbb/trunk@4916 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/functions_profile_fields.php')
-rw-r--r--phpBB/includes/functions_profile_fields.php241
1 files changed, 92 insertions, 149 deletions
diff --git a/phpBB/includes/functions_profile_fields.php b/phpBB/includes/functions_profile_fields.php
index c14062c0e9..913e19b365 100644
--- a/phpBB/includes/functions_profile_fields.php
+++ b/phpBB/includes/functions_profile_fields.php
@@ -13,7 +13,6 @@
// TODO for M-3:
//
-// * add real language support [admin]
// * simplify the class (logical seperation between display and insert/update)
class custom_profile
@@ -21,13 +20,37 @@ class custom_profile
var $profile_types = array(1 => 'int', 2 => 'string', 3 => 'text', 4 => 'bool', 5 => 'dropdown', 6 => 'date');
var $options_lang = array();
+ // Build language options cache, useful for viewtopic display
+ function build_cache()
+ {
+ global $db, $user;
+
+ $this->cache = array();
+
+ $sql = 'SELECT l.*, f.*
+ FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f
+ WHERE l.lang_id = ' . $user->get_iso_lang_id() . '
+ AND f.field_active = 1
+ AND f.field_hide = 0
+ AND l.field_id = f.field_id
+ GROUP BY f.field_id
+ ORDER BY f.field_order';
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $this->cache[$row['field_ident']] = $row;
+ }
+ $db->sql_freeresult($result);
+ }
+
// Functions performing operations on register/profile/profile admin
function submit_cp_field($mode, &$cp_data, &$cp_error)
{
global $auth, $db;
$sql = 'SELECT *
- FROM phpbb_profile_fields
+ FROM ' . PROFILE_FIELDS_TABLE . '
WHERE field_active = 1
' . (($mode == 'register') ? ' AND field_show_on_reg = 1' : '') .
(($auth->acl_gets('a_', 'm_') && $mode == 'profile') ? '' : ' AND field_hide = 0') . '
@@ -46,13 +69,13 @@ class custom_profile
$db->sql_freeresult($result);
}
- // Assign fields to template, mode can be profile (for profile change or register for registration
+ // Assign fields to template, mode can be profile (for profile change) or register (for registration)
function generate_profile_fields($mode, $lang_id, $cp_error)
{
global $db, $template, $auth, $user;
- $sql = "SELECT l.*, f.*
- FROM phpbb_profile_lang l, phpbb_profile_fields f
+ $sql = 'SELECT l.*, f.*
+ FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . " f
WHERE l.lang_id = $lang_id
AND f.field_active = 1
" . (($mode == 'register') ? ' AND f.field_show_on_reg = 1' : '') .
@@ -74,29 +97,6 @@ class custom_profile
$db->sql_freeresult($result);
}
- function build_cache()
- {
- global $db, $user;
-
- $this->cache = array();
-
- $sql = 'SELECT l.*, f.*
- FROM phpbb_profile_lang l, phpbb_profile_fields f
- WHERE l.lang_id = ' . $user->get_iso_lang_id() . '
- AND f.field_active = 1
- AND f.field_hide = 0
- AND l.field_id = f.field_id
- GROUP BY f.field_id
- ORDER BY f.field_order';
- $result = $db->sql_query($sql);
-
- while ($row = $db->sql_fetchrow($result))
- {
- $this->cache[$row['field_ident']] = $row;
- }
- $db->sql_freeresult($result);
- }
-
// Assign fields to template, used for viewprofile, viewtopic and memberlist (if load setting is enabled)
// This is directly connected to the user -> mode == grab is to grab the user specific fields, mode == show is for assigning the row to the template
function generate_profile_fields_template($mode, $user_id = 0, $profile_row = false)
@@ -121,7 +121,7 @@ class custom_profile
}
$sql = 'SELECT *
- FROM phpbb_profile_fields_data
+ FROM ' . PROFILE_DATA_TABLE . '
WHERE user_id IN (' . implode(', ', array_map('intval', $user_id)) . ')';
$result = $db->sql_query($sql);
@@ -179,8 +179,8 @@ class custom_profile
}
else
{
- $sql = "SELECT option_id, value
- FROM phpbb_profile_fields_lang
+ $sql = 'SELECT option_id, value
+ FROM ' . PROFILE_FIELDS_LANG_TABLE . "
WHERE field_id = $field_id
AND lang_id = $lang_id
AND field_type = $field_type
@@ -503,7 +503,7 @@ class custom_profile
global $db, $user, $auth;
$sql = 'SELECT f.field_type, f.field_ident, f.field_default_value, l.lang_default_value
- FROM phpbb_profile_lang l, phpbb_profile_fields f
+ FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f
WHERE l.lang_id = ' . $user->get_iso_lang_id() . '
AND f.field_active = 1
AND f.field_show_on_reg = 0
@@ -599,16 +599,14 @@ class custom_profile
class custom_profile_admin extends custom_profile
{
var $vars = array();
+
-
- // GET_* get admin options for second step
- function get_string_options()
+ function validate_options()
{
global $user;
- $options = array();
+ $validate_ary = array('CHARS_ANY' => '.*', 'NUMBERS_ONLY' => '[0-9]+', 'ALPHA_ONLY' => '[\w]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+');
- $validate_ary = array('CHARS_ANY' => '.*', 'ALPHA_ONLY' => '[\w]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+');
$validate_options = '';
foreach ($validate_ary as $lang => $value)
{
@@ -616,19 +614,19 @@ class custom_profile_admin extends custom_profile
$validate_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang[$lang] . '</option>';
}
+ return $validate_options;
+ }
+
+ // GET_* get admin options for second step
+ function get_string_options()
+ {
+ global $user;
+
$options = array(
- 0 => array(
- 'L_NAME' => 'Length of input box',
- 'FIELD' => '<input class="post" type="text" name="field_length" size="5" value="' . $this->vars['field_length'] . '" />'),
- 1 => array(
- 'L_NAME' => 'Minimum number of characters entered',
- 'FIELD' => '<input class="post" type="text" name="field_minlen" size="5" value="' . $this->vars['field_minlen'] . '" />'),
- 2 => array(
- 'L_NAME' => 'Maximum number of characters entered',
- 'FIELD' => '<input class="post" type="text" name="field_maxlen" size="5" value="' . $this->vars['field_maxlen'] . '" />'),
- 3 => array(
- 'L_NAME' => 'Field Validation',
- 'FIELD' => '<select name="field_validation">' . $validate_options . '</select>'),
+ 0 => array('TITLE' => $user->lang['FIELD_LENGTH'], 'FIELD' => '<input class="post" type="text" name="field_length" size="5" value="' . $this->vars['field_length'] . '" />'),
+ 1 => array('TITLE' => $user->lang['MIN_FIELD_CHARS'], 'FIELD' => '<input class="post" type="text" name="field_minlen" size="5" value="' . $this->vars['field_minlen'] . '" />'),
+ 2 => array('TITLE' => $user->lang['MAX_FIELD_CHARS'], 'FIELD' => '<input class="post" type="text" name="field_maxlen" size="5" value="' . $this->vars['field_maxlen'] . '" />'),
+ 3 => array('TITLE' => $user->lang['FIELD_VALIDATION'], 'FIELD' => '<select name="field_validation">' . $this->validate_options() . '</select>')
);
return $options;
@@ -638,30 +636,11 @@ class custom_profile_admin extends custom_profile
{
global $user;
- $options = array();
-
- $validate_ary = array('CHARS_ANY' => '.*', 'ALPHA_ONLY' => '[\w]+', 'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+');
- $validate_options = '';
- foreach ($validate_ary as $lang => $value)
- {
- $selected = ($this->vars['field_validation'] == $value) ? ' selected="selected"' : '';
- $validate_options .= '<option value="' . $value . '"' . $selected . '>' . $user->lang[$lang] . '</option>';
- }
-
$options = array(
- 0 => array(
- 'L_NAME' => 'Field Length',
- 'FIELD' => '<table border=0><tr><td><input name="rows" size="5" value="' . $this->vars['rows'] . '" class="post" /></td><td>[ ' . $user->lang['ROWS'] . ' ]</td></tr><tr><td><input name="columns" size="5" value="' . $this->vars['columns'] . '" class="post" /></td><td>[ ' . $user->lang['COLUMNS'] . ' ] <input type="hidden" name="field_length" value="' . $this->vars['field_length'] . '" /></td></tr></table>'),
- 1 => array(
- 'L_NAME' => 'Minimum number of characters entered',
- 'FIELD' => '<input class="post" type="text" name="field_minlen" size="10" value="' . $this->vars['field_minlen'] . '" />'),
- 2 => array(
- 'L_NAME' => 'Maximum number of characters entered',
- 'FIELD' => '<input class="post" type="text" name="field_maxlen" size="10" value="' . $this->vars['field_maxlen'] . '" />'),
- 3 => array(
- 'L_NAME' => 'Field Validation',
- 'L_EXPLAIN' => '',
- 'FIELD' => '<select name="field_validation">' . $validate_options . '</select>'),
+ 0 => array('TITLE' => $user->lang['FIELD_LENGTH'], 'FIELD' => '<table border=0><tr><td><input name="rows" size="5" value="' . $this->vars['rows'] . '" class="post" /></td><td>[ ' . $user->lang['ROWS'] . ' ]</td></tr><tr><td><input name="columns" size="5" value="' . $this->vars['columns'] . '" class="post" /></td><td>[ ' . $user->lang['COLUMNS'] . ' ] <input type="hidden" name="field_length" value="' . $this->vars['field_length'] . '" /></td></tr></table>'),
+ 1 => array('TITLE' => $user->lang['MIN_FIELD_CHARS'], 'FIELD' => '<input class="post" type="text" name="field_minlen" size="10" value="' . $this->vars['field_minlen'] . '" />'),
+ 2 => array('TITLE' => $user->lang['MAX_FIELD_CHARS'], 'FIELD' => '<input class="post" type="text" name="field_maxlen" size="10" value="' . $this->vars['field_maxlen'] . '" />'),
+ 3 => array('TITLE' => $user->lang['FIELD_VALIDATION'], 'FIELD' => '<select name="field_validation">' . $this->validate_options() . '</select>')
);
return $options;
@@ -672,18 +651,10 @@ class custom_profile_admin extends custom_profile
global $user;
$options = array(
- 0 => array(
- 'L_NAME' => 'Length of input box',
- 'FIELD' => '<input class="post" type="text" name="field_length" size="5" value="' . $this->vars['field_length'] . '" />'),
- 1 => array(
- 'L_NAME' => 'Lowest allowed number',
- 'FIELD' => '<input class="post" type="text" name="field_minlen" size="5" value="' . $this->vars['field_minlen'] . '" />'),
- 2 => array(
- 'L_NAME' => 'highest allowed number',
- 'FIELD' => '<input class="post" type="text" name="field_maxlen" size="5" value="' . $this->vars['field_maxlen'] . '" />'),
- 3 => array(
- 'L_NAME' => 'Default Value',
- 'FIELD' => '<input class="post" type="post" name="field_default_value" value="' . $this->vars['field_default_value'] . '" />'),
+ 0 => array('TITLE' => $user->lang['FIELD_LENGTH'], 'FIELD' => '<input class="post" type="text" name="field_length" size="5" value="' . $this->vars['field_length'] . '" />'),
+ 1 => array('TITLE' => $user->lang['MIN_FIELD_NUMBER'], 'FIELD' => '<input class="post" type="text" name="field_minlen" size="5" value="' . $this->vars['field_minlen'] . '" />'),
+ 2 => array('TITLE' => $user->lang['MAX_FIELD_NUMBER'], 'FIELD' => '<input class="post" type="text" name="field_maxlen" size="5" value="' . $this->vars['field_maxlen'] . '" />'),
+ 3 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => '<input class="post" type="post" name="field_default_value" value="' . $this->vars['field_default_value'] . '" />')
);
return $options;
@@ -691,36 +662,25 @@ class custom_profile_admin extends custom_profile
function get_bool_options()
{
- global $user, $config, $db;
+ global $user, $config, $lang_defs;
- $sql = 'SELECT lang_id
- FROM ' . LANG_TABLE . "
- WHERE lang_iso = '" . $config['default_lang'] . "'";
- $result = $db->sql_query($sql);
- $default_lang_id = (int) $db->sql_fetchfield('lang_id', 0, $result);
- $db->sql_freeresult($result);
+ $default_lang_id = $lang_defs['iso'][$config['default_lang']];
$profile_row = array(
- 'var_name' => 'field_default_value',
- 'lang_name' => $this->vars['lang_name'],
- 'lang_explain' => $this->vars['lang_explain'],
- 'lang_id' => $default_lang_id,
- 'field_default_value' => $this->vars['field_default_value'],
- 'field_ident' => 'field_default_value',
- 'field_type' => FIELD_BOOL,
- 'field_length' => $this->vars['field_length'],
- 'lang_options' => $this->vars['lang_options']
+ 'var_name' => 'field_default_value',
+ 'lang_name' => $this->vars['lang_name'],
+ 'lang_explain' => $this->vars['lang_explain'],
+ 'lang_id' => $default_lang_id,
+ 'field_default_value' => $this->vars['field_default_value'],
+ 'field_ident' => 'field_default_value',
+ 'field_type' => FIELD_BOOL,
+ 'field_length' => $this->vars['field_length'],
+ 'lang_options' => $this->vars['lang_options']
);
-
$options = array(
- 0 => array(
- 'L_NAME' => 'Field Type',
- 'L_EXPLAIN' => 'Define the Type, either a checkbox or radio buttons',
- 'FIELD' => '<input type="radio" name="field_length" value="1"' . (($this->vars['field_length'] == 1) ? ' checked="checked"' : '') . ' />Radio Buttons&nbsp; &nbsp;<input type="radio" name="field_length" value="2"' . (($this->vars['field_length'] == 2) ? ' checked="checked"' : '') . ' />Checkbox&nbsp; &nbsp;'),
- 1 => array(
- 'L_NAME' => 'Default Value',
- 'FIELD' => $this->generate_bool($profile_row, true)),
+ 0 => array('TITLE' => $user->lang['FIELD_TYPE'], 'EXPLAIN' => $user->lang['BOOL_TYPE_EXPLAIN'], 'FIELD' => '<input type="radio" name="field_length" value="1"' . (($this->vars['field_length'] == 1) ? ' checked="checked"' : '') . ' />' . $user->lang['RADIO_BUTTONS'] . '&nbsp; &nbsp;<input type="radio" name="field_length" value="2"' . (($this->vars['field_length'] == 2) ? ' checked="checked"' : '') . ' />' . $user->lang['CHECKBOX'] . '&nbsp; &nbsp;'),
+ 1 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => $this->generate_bool($profile_row, true))
);
return $options;
@@ -728,25 +688,20 @@ class custom_profile_admin extends custom_profile
function get_dropdown_options()
{
- global $user, $config, $db;
+ global $user, $config, $lang_defs;
- $sql = 'SELECT lang_id
- FROM ' . LANG_TABLE . "
- WHERE lang_iso = '" . $config['default_lang'] . "'";
- $result = $db->sql_query($sql);
- $default_lang_id = (int) $db->sql_fetchfield('lang_id', 0, $result);
- $db->sql_freeresult($result);
+ $default_lang_id = $lang_defs['iso'][$config['default_lang']];
$profile_row[0] = array(
- 'var_name' => 'field_default_value',
- 'field_id' => 1,
- 'lang_name' => $this->vars['lang_name'],
- 'lang_explain' => $this->vars['lang_explain'],
- 'lang_id' => $default_lang_id,
- 'field_default_value' => $this->vars['field_default_value'],
- 'field_ident' => 'field_default_value',
- 'field_type' => FIELD_DROPDOWN,
- 'lang_options' => $this->vars['lang_options']
+ 'var_name' => 'field_default_value',
+ 'field_id' => 1,
+ 'lang_name' => $this->vars['lang_name'],
+ 'lang_explain' => $this->vars['lang_explain'],
+ 'lang_id' => $default_lang_id,
+ 'field_default_value' => $this->vars['field_default_value'],
+ 'field_ident' => 'field_default_value',
+ 'field_type' => FIELD_DROPDOWN,
+ 'lang_options' => $this->vars['lang_options']
);
$profile_row[1] = $profile_row[0];
@@ -754,13 +709,8 @@ class custom_profile_admin extends custom_profile
$profile_row[1]['field_ident'] = 'field_no_value';
$options = array(
- 0 => array(
- 'L_NAME' => 'Default Value',
- 'FIELD' => $this->generate_dropdown($profile_row[0], true)),
- 1 => array(
- 'L_NAME' => 'No Value',
- 'L_EXPLAIN' => 'Value for a non-entry. If the field is required, the user gets an error if he choose the option selected here',
- 'FIELD' => $this->generate_dropdown($profile_row[1], true)),
+ 0 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => $this->generate_dropdown($profile_row[0], true)),
+ 1 => array('TITLE' => $user->lang['NO_VALUE_OPTION'], 'EXPLAIN' => $user->lang['NO_VALUE_OPTION_EXPLAIN'], 'FIELD' => $this->generate_dropdown($profile_row[1], true))
);
return $options;
@@ -768,30 +718,23 @@ class custom_profile_admin extends custom_profile
function get_date_options()
{
- global $user, $config, $db;
+ global $user, $config, $lang_defs;
- $sql = 'SELECT lang_id
- FROM ' . LANG_TABLE . "
- WHERE lang_iso = '" . $config['default_lang'] . "'";
- $result = $db->sql_query($sql);
- $default_lang_id = (int) $db->sql_fetchfield('lang_id', 0, $result);
- $db->sql_freeresult($result);
+ $default_lang_id = $lang_defs['iso'][$config['default_lang']];
$profile_row = array(
- 'var_name' => 'field_default_value',
- 'lang_name' => $this->vars['lang_name'],
- 'lang_explain' => $this->vars['lang_explain'],
- 'lang_id' => $default_lang_id,
- 'field_default_value' => $this->vars['field_default_value'],
- 'field_ident' => 'field_default_value',
- 'field_type' => FIELD_DATE,
- 'field_length' => $this->vars['field_length']
+ 'var_name' => 'field_default_value',
+ 'lang_name' => $this->vars['lang_name'],
+ 'lang_explain' => $this->vars['lang_explain'],
+ 'lang_id' => $default_lang_id,
+ 'field_default_value' => $this->vars['field_default_value'],
+ 'field_ident' => 'field_default_value',
+ 'field_type' => FIELD_DATE,
+ 'field_length' => $this->vars['field_length']
);
$options = array(
- 0 => array(
- 'L_NAME' => 'Default Value',
- 'FIELD' => $this->generate_date($profile_row, true) . '<br /><input type="checkbox" name="always_now"' . ((isset($_REQUEST['always_now']) || $this->vars['field_default_value'] == 'now') ? ' checked="checked"' : '') . ' />&nbsp; Always the current date'),
+ 0 => array('TITLE' => $user->lang['DEFAULT_VALUE'], 'FIELD' => $this->generate_date($profile_row, true) . '<br /><input type="checkbox" name="always_now"' . ((isset($_REQUEST['always_now']) || $this->vars['field_default_value'] == 'now') ? ' checked="checked"' : '') . ' />&nbsp; ' . $user->lang['ALWAYS_TODAY'])
);
return $options;