diff options
| author | Meik Sievertsen <acydburn@phpbb.com> | 2004-06-15 18:01:59 +0000 | 
|---|---|---|
| committer | Meik Sievertsen <acydburn@phpbb.com> | 2004-06-15 18:01:59 +0000 | 
| commit | 5cb3baf33b4bea77d26ae38fdc049ab28ef3133e (patch) | |
| tree | a33eb58b61d6affcf55904e123d88221fa681e0d /phpBB/includes | |
| parent | 8022b6f6b21017d2016121c41f48a15fdbc9a404 (diff) | |
| download | forums-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')
| -rw-r--r-- | phpBB/includes/functions_profile_fields.php | 241 | 
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   <input type="radio" name="field_length" value="2"' . (($this->vars['field_length'] == 2) ? ' checked="checked"' : '') . ' />Checkbox   '), -			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'] . '   <input type="radio" name="field_length" value="2"' . (($this->vars['field_length'] == 2) ? ' checked="checked"' : '') . ' />' . $user->lang['CHECKBOX'] . '   '), +			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"' : '') . ' />  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"' : '') . ' />  ' . $user->lang['ALWAYS_TODAY'])  		);  		return $options;  | 
