diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2009-06-13 14:23:04 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2009-06-13 14:23:04 +0000 |
commit | 2d30e880899d7a15c0cac5c1f03c951fb0ceb5be (patch) | |
tree | 3f0eb212edbb4f651ae3f5d06fcdb18d5efdb084 /phpBB/includes/functions_profile_fields.php | |
parent | Oh right. PHP4 (diff) | |
download | phpbb-2d30e880899d7a15c0cac5c1f03c951fb0ceb5be.tar.gz phpbb-2d30e880899d7a15c0cac5c1f03c951fb0ceb5be.tar.bz2 phpbb-2d30e880899d7a15c0cac5c1f03c951fb0ceb5be.zip |
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
Diffstat (limited to 'phpBB/includes/functions_profile_fields.php')
-rw-r--r-- | phpBB/includes/functions_profile_fields.php | 61 |
1 files changed, 60 insertions, 1 deletions
diff --git a/phpBB/includes/functions_profile_fields.php b/phpBB/includes/functions_profile_fields.php index 26a1feb126..d9b6b25477 100644 --- a/phpBB/includes/functions_profile_fields.php +++ b/phpBB/includes/functions_profile_fields.php @@ -259,7 +259,7 @@ class custom_profile } /** - * Submit profile field + * Submit profile field for validation * @access public */ function submit_cp_field($mode, $lang_id, &$cp_data, &$cp_error) @@ -350,6 +350,65 @@ class custom_profile } /** + * 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) * 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 * @access public |