diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2012-06-20 12:41:26 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2012-06-20 12:41:26 +0200 |
commit | c8e322d88f8195727c18eac90d30a5919e6fb8a0 (patch) | |
tree | f43f6949e16215488f9b133ab4a651f59496de8f | |
parent | 4fbbbfcebb6f8ed9867cb61623767a2f4c191ed6 (diff) | |
download | forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar.gz forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar.bz2 forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.tar.xz forums-c8e322d88f8195727c18eac90d30a5919e6fb8a0.zip |
[ticket/10942] Fix sql_conditional for mssql, postgre and oracle
PHPBB3-10942
-rw-r--r-- | phpBB/includes/db/mssql.php | 12 | ||||
-rw-r--r-- | phpBB/includes/db/mssql_odbc.php | 12 | ||||
-rw-r--r-- | phpBB/includes/db/mssqlnative.php | 12 | ||||
-rw-r--r-- | phpBB/includes/db/oracle.php | 12 | ||||
-rw-r--r-- | phpBB/includes/db/postgres.php | 12 |
5 files changed, 60 insertions, 0 deletions
diff --git a/phpBB/includes/db/mssql.php b/phpBB/includes/db/mssql.php index 16b3b3c600..ca8846b60d 100644 --- a/phpBB/includes/db/mssql.php +++ b/phpBB/includes/db/mssql.php @@ -94,6 +94,18 @@ class dbal_mssql extends dbal /** * {@inheritDoc} */ + function sql_conditional($condition, $action_true, $action_false = false) + { + $sql_condition = 'CASE WHEN ' . $condition; + $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)'; + $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : ''; + $sql_condition .= ' END'; + return $sql_condition; + } + + /** + * {@inheritDoc} + */ function sql_concatenate($string1, $string2) { return $string1 . ' + ' . $string2; diff --git a/phpBB/includes/db/mssql_odbc.php b/phpBB/includes/db/mssql_odbc.php index c1ee1b43f0..814dd76373 100644 --- a/phpBB/includes/db/mssql_odbc.php +++ b/phpBB/includes/db/mssql_odbc.php @@ -112,6 +112,18 @@ class dbal_mssql_odbc extends dbal /** * {@inheritDoc} */ + function sql_conditional($condition, $action_true, $action_false = false) + { + $sql_condition = 'CASE WHEN ' . $condition; + $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)'; + $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : ''; + $sql_condition .= ' END'; + return $sql_condition; + } + + /** + * {@inheritDoc} + */ function sql_concatenate($string1, $string2) { return $string1 . ' + ' . $string2; diff --git a/phpBB/includes/db/mssqlnative.php b/phpBB/includes/db/mssqlnative.php index db1bb86620..c6c34c8612 100644 --- a/phpBB/includes/db/mssqlnative.php +++ b/phpBB/includes/db/mssqlnative.php @@ -260,6 +260,18 @@ class dbal_mssqlnative extends dbal /** * {@inheritDoc} */ + function sql_conditional($condition, $action_true, $action_false = false) + { + $sql_condition = 'CASE WHEN ' . $condition; + $sql_condition .= ' THEN CAST(' . $action_true . ' AS VARCHAR)'; + $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS VARCHAR)' : ''; + $sql_condition .= ' END'; + return $sql_condition; + } + + /** + * {@inheritDoc} + */ function sql_concatenate($string1, $string2) { return $string1 . ' + ' . $string2; diff --git a/phpBB/includes/db/oracle.php b/phpBB/includes/db/oracle.php index 2e801532f0..f09e702951 100644 --- a/phpBB/includes/db/oracle.php +++ b/phpBB/includes/db/oracle.php @@ -90,6 +90,18 @@ class dbal_oracle extends dbal } /** + * {@inheritDoc} + */ + function sql_conditional($condition, $action_true, $action_false = false) + { + $sql_condition = 'CASE WHEN ' . $condition; + $sql_condition .= ' THEN CAST(' . $action_true . ' AS clob)'; + $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS clob)' : ''; + $sql_condition .= ' END'; + return $sql_condition; + } + + /** * SQL Transaction * @access private */ diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php index dddf615f9c..a27fbb9d9f 100644 --- a/phpBB/includes/db/postgres.php +++ b/phpBB/includes/db/postgres.php @@ -157,6 +157,18 @@ class dbal_postgres extends dbal /** * {@inheritDoc} */ + function sql_conditional($condition, $action_true, $action_false = false) + { + $sql_condition = 'CASE WHEN ' . $condition; + $sql_condition .= ' THEN CAST(' . $action_true . ' AS TEXT)'; + $sql_condition .= ($action_false !== false) ? ' ELSE CAST(' . $action_false . ' AS TEXT)' : ''; + $sql_condition .= ' END'; + return $sql_condition; + } + + /** + * {@inheritDoc} + */ function sql_concatenate($string1, $string2) { return $string1 . ' || ' . $string2; |