aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2009-06-13 14:23:04 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2009-06-13 14:23:04 +0000
commit2d30e880899d7a15c0cac5c1f03c951fb0ceb5be (patch)
tree3f0eb212edbb4f651ae3f5d06fcdb18d5efdb084 /phpBB/includes/functions_profile_fields.php
parentOh right. PHP4 (diff)
downloadphpbb-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.php61
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