mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
use same method to update custom profile fields in UCP and ACP (and then i am able to debug what is wrong with the oracle code)
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9582 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
11dc410633
commit
2d30e88089
3 changed files with 62 additions and 68 deletions
|
@ -1136,54 +1136,7 @@ class acp_users
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
// Update Custom Fields
|
// Update Custom Fields
|
||||||
if (sizeof($cp_data))
|
$cp->update_profile_field_data($user_id, $cp_data);
|
||||||
{
|
|
||||||
switch ($db->sql_layer)
|
|
||||||
{
|
|
||||||
case 'oracle':
|
|
||||||
case 'firebird':
|
|
||||||
case 'postgres':
|
|
||||||
$right_delim = $left_delim = '"';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'sqlite':
|
|
||||||
case 'mssql':
|
|
||||||
case 'mssql_odbc':
|
|
||||||
$right_delim = ']';
|
|
||||||
$left_delim = '[';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'mysql':
|
|
||||||
case 'mysql4':
|
|
||||||
case 'mysqli':
|
|
||||||
$right_delim = $left_delim = '`';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($cp_data as $key => $value)
|
|
||||||
{
|
|
||||||
// Firebird is case sensitive with delimiter
|
|
||||||
$cp_data[$left_delim . (($db->sql_layer == 'firebird') ? strtoupper($key) : $key) . $right_delim] = $value;
|
|
||||||
unset($cp_data[$key]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$sql = 'UPDATE ' . PROFILE_FIELDS_DATA_TABLE . '
|
|
||||||
SET ' . $db->sql_build_array('UPDATE', $cp_data) . "
|
|
||||||
WHERE user_id = $user_id";
|
|
||||||
$db->sql_query($sql);
|
|
||||||
|
|
||||||
if (!$db->sql_affectedrows())
|
|
||||||
{
|
|
||||||
$cp_data['user_id'] = (int) $user_id;
|
|
||||||
|
|
||||||
$db->sql_return_on_error(true);
|
|
||||||
|
|
||||||
$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $cp_data);
|
|
||||||
$db->sql_query($sql);
|
|
||||||
|
|
||||||
$db->sql_return_on_error(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
trigger_error($user->lang['USER_PROFILE_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
trigger_error($user->lang['USER_PROFILE_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,7 +259,7 @@ class custom_profile
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Submit profile field
|
* Submit profile field for validation
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
function submit_cp_field($mode, $lang_id, &$cp_data, &$cp_error)
|
function submit_cp_field($mode, $lang_id, &$cp_data, &$cp_error)
|
||||||
|
@ -349,6 +349,65 @@ class custom_profile
|
||||||
$db->sql_freeresult($result);
|
$db->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update profile field data directly
|
||||||
|
*/
|
||||||
|
function update_profile_field_data($user_id, &$cp_data)
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
if (!sizeof($cp_data))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ($db->sql_layer)
|
||||||
|
{
|
||||||
|
case 'oracle':
|
||||||
|
case 'firebird':
|
||||||
|
case 'postgres':
|
||||||
|
$right_delim = $left_delim = '"';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'sqlite':
|
||||||
|
case 'mssql':
|
||||||
|
case 'mssql_odbc':
|
||||||
|
$right_delim = ']';
|
||||||
|
$left_delim = '[';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'mysql':
|
||||||
|
case 'mysql4':
|
||||||
|
case 'mysqli':
|
||||||
|
$right_delim = $left_delim = '`';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($cp_data as $key => $value)
|
||||||
|
{
|
||||||
|
// Firebird is case sensitive with delimiter
|
||||||
|
$cp_data[$left_delim . (($db->sql_layer == 'firebird') ? strtoupper($key) : $key) . $right_delim] = $value;
|
||||||
|
unset($cp_data[$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = 'UPDATE ' . PROFILE_FIELDS_DATA_TABLE . '
|
||||||
|
SET ' . $db->sql_build_array('UPDATE', $cp_data) . "
|
||||||
|
WHERE user_id = $user_id";
|
||||||
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
if (!$db->sql_affectedrows())
|
||||||
|
{
|
||||||
|
$cp_data['user_id'] = (int) $user_id;
|
||||||
|
|
||||||
|
$db->sql_return_on_error(true);
|
||||||
|
|
||||||
|
$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $cp_data);
|
||||||
|
$db->sql_query($sql);
|
||||||
|
|
||||||
|
$db->sql_return_on_error(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assign fields to template, used for viewprofile, viewtopic and memberlist (if load setting is enabled)
|
* 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
|
* 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
|
||||||
|
|
|
@ -380,25 +380,7 @@ class ucp_profile
|
||||||
$db->sql_query($sql);
|
$db->sql_query($sql);
|
||||||
|
|
||||||
// Update Custom Fields
|
// Update Custom Fields
|
||||||
if (sizeof($cp_data))
|
$cp->update_profile_field_data($user->data['user_id'], $cp_data);
|
||||||
{
|
|
||||||
$sql = 'UPDATE ' . PROFILE_FIELDS_DATA_TABLE . '
|
|
||||||
SET ' . $db->sql_build_array('UPDATE', $cp_data) . '
|
|
||||||
WHERE user_id = ' . $user->data['user_id'];
|
|
||||||
$db->sql_query($sql);
|
|
||||||
|
|
||||||
if (!$db->sql_affectedrows())
|
|
||||||
{
|
|
||||||
$cp_data['user_id'] = (int) $user->data['user_id'];
|
|
||||||
|
|
||||||
$db->sql_return_on_error(true);
|
|
||||||
|
|
||||||
$sql = 'INSERT INTO ' . PROFILE_FIELDS_DATA_TABLE . ' ' . $db->sql_build_array('INSERT', $cp_data);
|
|
||||||
$db->sql_query($sql);
|
|
||||||
|
|
||||||
$db->sql_return_on_error(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
meta_refresh(3, $this->u_action);
|
meta_refresh(3, $this->u_action);
|
||||||
$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
|
$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
|
||||||
|
|
Loading…
Add table
Reference in a new issue