diff options
Diffstat (limited to 'phpBB/includes')
-rw-r--r-- | phpBB/includes/acp/acp_forums.php | 66 | ||||
-rw-r--r-- | phpBB/includes/acp/acp_styles.php | 70 | ||||
-rw-r--r-- | phpBB/includes/db/dbal.php | 32 | ||||
-rw-r--r-- | phpBB/includes/db/mssql.php | 8 | ||||
-rw-r--r-- | phpBB/includes/db/mssql_odbc.php | 8 | ||||
-rw-r--r-- | phpBB/includes/db/postgres.php | 19 | ||||
-rw-r--r-- | phpBB/includes/db/sqlite.php | 19 | ||||
-rw-r--r-- | phpBB/includes/functions_posting.php | 135 | ||||
-rw-r--r-- | phpBB/includes/functions_privmsgs.php | 132 | ||||
-rw-r--r-- | phpBB/includes/functions_user.php | 201 | ||||
-rw-r--r-- | phpBB/includes/ucp/ucp_profile.php | 66 |
11 files changed, 91 insertions, 665 deletions
diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index ac461772d6..6fbe85450d 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -919,72 +919,8 @@ class acp_forums $forum_id = $forum_data_sql['forum_id']; unset($forum_data_sql['forum_id']); - $query = ''; - - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $values = array(); - foreach ($forum_data_sql as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'forum_desc_bitfield' && $key != 'forum_rules_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - case 'sqlite': - $values = array(); - foreach ($forum_data_sql as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'forum_desc_bitfield' && $key != 'forum_rules_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = '" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - default: - $query = $db->sql_build_array('UPDATE', $forum_data_sql); - break; - } - $sql = 'UPDATE ' . FORUMS_TABLE . ' - SET ' . $query . ' + SET ' . $db->sql_build_array('UPDATE', $forum_data_sql) . ' WHERE forum_id = ' . $forum_id; $db->sql_query($sql); diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php index c69cbec65e..03ba2cf367 100644 --- a/phpBB/includes/acp/acp_styles.php +++ b/phpBB/includes/acp/acp_styles.php @@ -2949,78 +2949,10 @@ pagination_sep = \'{PAGINATION_SEP}\' unset($cfg_data); } - $query = ''; - - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $fields = array(); - foreach ($sql_ary as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - case 'sqlite': - $fields = array(); - foreach ($sql_ary as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "'" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - default: - $query = $db->sql_build_array('INSERT', $sql_ary); - break; - } - $db->sql_transaction('begin'); $sql = "INSERT INTO $sql_from - " . $query; + " . $db->sql_build_array('INSERT', $sql_ary); $db->sql_query($sql); $id = $db->sql_nextid(); diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php index 8660c43546..dcf9947ddf 100644 --- a/phpBB/includes/db/dbal.php +++ b/phpBB/includes/db/dbal.php @@ -199,7 +199,14 @@ class dbal } else if (is_string($var)) { - $values[] = "'" . $this->sql_escape($var) . "'"; + if (strpos($key, 'bitfield') === false) + { + $values[] = "'" . $this->sql_escape($var) . "'"; + } + else + { + $values[] = $this->sql_escape_binary($var); + } } else if (is_array($var) && is_string($var[0])) { @@ -228,7 +235,14 @@ class dbal } else if (is_string($var)) { - $values[] = "'" . $this->sql_escape($var) . "'"; + if (strpos($key, 'bitfield') === false) + { + $values[] = "'" . $this->sql_escape($var) . "'"; + } + else + { + $values[] = $this->sql_escape_binary($var); + } } else { @@ -251,7 +265,14 @@ class dbal } else if (is_string($var)) { - $values[] = "$key = '" . $this->sql_escape($var) . "'"; + if (strpos($key, 'bitfield') === false) + { + $values[] = "$key = '" . $this->sql_escape($var) . "'"; + } + else + { + $values[] = "$key = " . $this->sql_escape_binary($var); + } } else { @@ -264,6 +285,11 @@ class dbal return $query; } + function sql_escape_binary($msg) + { + return "'" . $this->sql_escape($msg) . "'"; + } + /** * Build sql statement from array for select and select distinct statements * diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php index 13a6fb8aab..0e8cc318f1 100644 --- a/phpBB/includes/db/mssql.php +++ b/phpBB/includes/db/mssql.php @@ -370,6 +370,14 @@ class dbal_mssql extends dbal } /** + * Escape string used in sql query + */ + function sql_escape_binary($msg) + { + return "CAST('" . $msg . "' AS varbinary)"; + } + + /** * return sql error array * @access: private */ diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php index e1b2675a23..38ed91cd55 100644 --- a/phpBB/includes/db/mssql_odbc.php +++ b/phpBB/includes/db/mssql_odbc.php @@ -380,6 +380,14 @@ class dbal_mssql_odbc extends dbal } /** + * Escape string used in sql query + */ + function sql_escape_binary($msg) + { + return "CAST('" . $msg . "' AS varbinary)"; + } + + /** * Build db-specific query data * @access: private */ diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php index c928a936d9..03fd5c17ce 100644 --- a/phpBB/includes/db/postgres.php +++ b/phpBB/includes/db/postgres.php @@ -258,7 +258,16 @@ class dbal_postgres extends dbal return $cache->sql_fetchrow($query_id); } - return ($query_id) ? @pg_fetch_assoc($query_id, NULL) : false; + $row = @pg_fetch_assoc($query_id, null); + if ($row) + { + foreach ($row as $key => $value) + { + $row[$key] = (strpos($key, 'bitfield') === false) ? $value : pg_unescape_bytea($value); + } + } + + return ($query_id) ? $row : false; } /** @@ -379,6 +388,14 @@ class dbal_postgres extends dbal } /** + * Escape string used in sql query + */ + function sql_escape_binary($msg) + { + return "'" . @pg_escape_bytea($msg) . "'"; + } + + /** * return sql error array * @access: private */ diff --git a/phpBB/includes/db/sqlite.php b/phpBB/includes/db/sqlite.php index 8bea1a3198..c203af9f67 100644 --- a/phpBB/includes/db/sqlite.php +++ b/phpBB/includes/db/sqlite.php @@ -216,7 +216,16 @@ class dbal_sqlite extends dbal return $cache->sql_fetchrow($query_id); } - return ($query_id) ? @sqlite_fetch_array($query_id, SQLITE_ASSOC) : false; + $row = @sqlite_fetch_array($query_id, SQLITE_ASSOC); + if ($row) + { + foreach ($row as $key => $value) + { + $row[$key] = (strpos($key, 'bitfield') === false) ? $value : sqlite_udf_decode_binary($value); + } + } + + return $row; } /** @@ -308,6 +317,14 @@ class dbal_sqlite extends dbal } /** + * Escape string used in sql query + */ + function sql_escape_binary($msg) + { + return "'" . @sqlite_udf_encode_binary($msg) . "'"; + } + + /** * return sql error array * @access: private */ diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 3d1b8aa96a..87a7b63533 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -1549,76 +1549,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u ); } - $query = ''; - - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $fields = array(); - foreach ($sql_data[POSTS_TABLE]['sql'] as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - case 'sqlite': - $fields = array(); - foreach ($sql_data[POSTS_TABLE]['sql'] as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "'" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - default: - $query = $db->sql_build_array('INSERT', $sql_data[POSTS_TABLE]['sql']); - break; - } - - - $sql = 'INSERT INTO ' . POSTS_TABLE . ' ' . $query; + $sql = 'INSERT INTO ' . POSTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_data[POSTS_TABLE]['sql']); $db->sql_query($sql); $data['post_id'] = $db->sql_nextid(); @@ -1694,70 +1625,8 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u // Update the posts table if (isset($sql_data[POSTS_TABLE]['sql'])) { - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $values = array(); - foreach ($sql_data[POSTS_TABLE]['sql'] as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - case 'sqlite': - $values = array(); - foreach ($sql_data[POSTS_TABLE]['sql'] as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key ='" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - default: - $query = $db->sql_build_array('UPDATE', $sql_data[POSTS_TABLE]['sql']); - break; - } - $sql = 'UPDATE ' . POSTS_TABLE . ' - SET ' . $query . ' + SET ' . $db->sql_build_array('UPDATE', $sql_data[POSTS_TABLE]['sql']) . ' WHERE post_id = ' . $data['post_id']; $db->sql_query($sql); } diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index b41a2f8b8f..068925b359 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -1316,141 +1316,13 @@ function submit_pm($mode, $subject, &$data, $update_message, $put_in_outbox = tr if ($mode == 'post' || $mode == 'reply' || $mode == 'quote' || $mode == 'quotepost' || $mode == 'forward') { - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $fields = array(); - foreach ($sql_data as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - case 'sqlite': - $fields = array(); - foreach ($sql_data as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "'" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - default: - $query = $db->sql_build_array('INSERT', $sql_data); - break; - } - - $db->sql_query('INSERT INTO ' . PRIVMSGS_TABLE . ' ' . $query); + $db->sql_query('INSERT INTO ' . PRIVMSGS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_data)); $data['msg_id'] = $db->sql_nextid(); } else if ($mode == 'edit') { - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $values = array(); - foreach ($sql_data as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'forum_desc_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - case 'sqlite': - $values = array(); - foreach ($sql_data as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'forum_desc_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = '" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - default: - $query = $db->sql_build_array('UPDATE', $sql_data); - break; - } - $sql = 'UPDATE ' . PRIVMSGS_TABLE . ' - SET message_edit_count = message_edit_count + 1, ' . $query . ' + SET message_edit_count = message_edit_count + 1, ' . $db->sql_build_array('UPDATE', $sql_data) . ' WHERE msg_id = ' . $data['msg_id']; $db->sql_query($sql); } diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 559be6bcaa..72f240b2e1 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -207,75 +207,7 @@ function user_add($user_row, $cp_data = false) } } - $query = ''; - - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $fields = array(); - foreach ($sql_ary as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'user_sig_bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - case 'sqlite': - $fields = array(); - foreach ($sql_ary as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'user_sig_bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "'" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - default: - $query = $db->sql_build_array('INSERT', $sql_ary); - break; - } - - $sql = 'INSERT INTO ' . USERS_TABLE . ' ' . $query; + $sql = 'INSERT INTO ' . USERS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); $db->sql_query($sql); $user_id = $db->sql_nextid(); @@ -1495,140 +1427,13 @@ function group_create(&$group_id, $type, $name, $desc, $group_attributes, $allow if ($group_id) { - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $values = array(); - foreach ($sql_ary as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'group_desc_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - case 'sqlite': - $values = array(); - foreach ($sql_ary as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'group_desc_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = '" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - default: - $query = $db->sql_build_array('UPDATE', $sql_ary); - break; - } - $sql = 'UPDATE ' . GROUPS_TABLE . ' - SET ' . $query . " + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . " WHERE group_id = $group_id"; } else { - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $fields = array(); - foreach ($sql_ary as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - case 'sqlite': - $fields = array(); - foreach ($sql_ary as $key => $var) - { - $fields[] = $key; - - if (is_null($var)) - { - $values[] = 'NULL'; - } - else if (is_string($var)) - { - if ($key !== 'bbcode_bitfield') - { - $values[] = "'" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "'" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? intval($var) : $var; - } - } - $query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; - break; - - default: - $query = $db->sql_build_array('INSERT', $sql_ary); - break; - } - $sql = 'INSERT INTO ' . GROUPS_TABLE . ' ' . $query; + $sql = 'INSERT INTO ' . GROUPS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary); } $db->sql_query($sql); diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php index 6a557bc264..52f17a8048 100644 --- a/phpBB/includes/ucp/ucp_profile.php +++ b/phpBB/includes/ucp/ucp_profile.php @@ -440,72 +440,8 @@ class ucp_profile 'user_sig_bbcode_bitfield' => $message_parser->bbcode_bitfield ); - $query = ''; - - switch (SQL_LAYER) - { - case 'mssql': - case 'mssql_odbc': - $values = array(); - foreach ($sql_ary as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'user_sig_bbcode_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = CAST('" . $var . "' AS varbinary)"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - case 'sqlite': - $values = array(); - foreach ($sql_ary as $key => $var) - { - if (is_null($var)) - { - $values[] = "$key = NULL"; - } - else if (is_string($var)) - { - if ($key !== 'user_sig_bbcode_bitfield') - { - $values[] = "$key = '" . $db->sql_escape($var) . "'"; - } - else - { - $values[] = "$key = '" . sqlite_udf_encode_binary($var) . "'"; - } - } - else - { - $values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; - } - } - $query = implode(', ', $values); - break; - - default: - $query = $db->sql_build_array('UPDATE', $sql_ary); - break; - } - $sql = 'UPDATE ' . USERS_TABLE . ' - SET ' . $query . ' + SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' WHERE user_id = ' . $user->data['user_id']; $db->sql_query($sql); |