aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_profile_fields.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes/functions_profile_fields.php')
-rw-r--r--phpBB/includes/functions_profile_fields.php52
1 files changed, 42 insertions, 10 deletions
diff --git a/phpBB/includes/functions_profile_fields.php b/phpBB/includes/functions_profile_fields.php
index 94b7e9a443..f6ba08dbb4 100644
--- a/phpBB/includes/functions_profile_fields.php
+++ b/phpBB/includes/functions_profile_fields.php
@@ -355,14 +355,8 @@ class custom_profile
WHERE user_id IN (' . implode(', ', array_map('intval', $user_id)) . ')';
$result = $db->sql_query($sql);
- if (!($row = $db->sql_fetchrow($result)))
- {
- $db->sql_freeresult($result);
- return array();
- }
-
$user_fields = array();
- do
+ while ($row = $db->sql_fetchrow($result))
{
foreach ($row as $ident => $value)
{
@@ -372,8 +366,7 @@ class custom_profile
$user_fields[$row['user_id']][$ident]['data'] = $this->profile_cache[$ident];
}
}
- }
- while ($row = $db->sql_fetchrow($result));
+ }
$db->sql_freeresult($result);
return $user_fields;
@@ -431,6 +424,10 @@ class custom_profile
switch ($this->profile_types[$field_type])
{
case 'int':
+ if ($value == '')
+ {
+ return NULL;
+ }
return (int) $value;
break;
@@ -493,7 +490,7 @@ class custom_profile
if ($ident_ary['data']['field_length'] == 1)
{
- $this->options_lang[$field_id][$lang_id][(int) $value];
+ return (isset($this->options_lang[$field_id][$lang_id][(int) $value])) ? $this->options_lang[$field_id][$lang_id][(int) $value] : NULL;
}
else if (!$value)
{
@@ -527,6 +524,30 @@ class custom_profile
{
$value = (isset($_REQUEST[$profile_row['field_ident']])) ? true : ((!isset($user->profile_fields[$user_ident]) || $preview) ? $default_value : $user->profile_fields[$user_ident]);
}
+ else if ($profile_row['field_type'] == FIELD_INT)
+ {
+ if (isset($_REQUEST[$profile_row['field_ident']]))
+ {
+ $value = ($_REQUEST[$profile_row['field_ident']] === '') ? NULL : request_var($profile_row['field_ident'], $default_value);
+ }
+ else
+ {
+ if (is_null($user->profile_fields[$user_ident]) && !$preview)
+ {
+ $value = NULL;
+ }
+ else if (!isset($user->profile_fields[$user_ident]) || $preview)
+ {
+ $value = $default_value;
+ }
+ else
+ {
+ $value = $user->profile_fields[$user_ident];
+ }
+ }
+
+ return (is_null($value)) ? '' : (int) $value;
+ }
else
{
$value = (isset($_REQUEST[$profile_row['field_ident']])) ? request_var($profile_row['field_ident'], $default_value, true) : ((!isset($user->profile_fields[$user_ident]) || $preview) ? $default_value : $user->profile_fields[$user_ident]);
@@ -818,6 +839,17 @@ class custom_profile
$var = request_var($var_name, $profile_row['field_default_value'], true);
break;
+ case FIELD_INT:
+ if (isset($_REQUEST[$var_name]) && $_REQUEST[$var_name] === '')
+ {
+ $var = NULL;
+ }
+ else
+ {
+ $var = request_var($var_name, $profile_row['field_default_value']);
+ }
+ break;
+
default:
$var = request_var($var_name, $profile_row['field_default_value']);
break;