From 71374078b969ab429f0efcdf99158c1d21b138b6 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 20 Jun 2012 01:50:00 +0200 Subject: [PATCH] [ticket/10942] Add sql_conditional to dbal PHPBB3-10942 --- phpBB/includes/db/dbal.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php index cf54d455f7..bf0dc15fad 100644 --- a/phpBB/includes/db/dbal.php +++ b/phpBB/includes/db/dbal.php @@ -283,6 +283,23 @@ class dbal return $this->_sql_like_expression('LIKE \'' . $this->sql_escape($expression) . '\''); } + /** + * Build a conditional SQL query + * + * @param string $condition The condition which must be true, to use action_true rather then action_else + * @param string $action_true SQL statement that is used, if the condition is true + * @param string $action_else SQL statement that is used, if the condition is false, optional + * @return string CASE expression including the condition and statements + */ + function sql_conditional($condition, $action_true, $action_false = false) + { + $sql_condition = 'CASE WHEN ' . $condition; + $sql_condition .= ' THEN ' . $action_true; + $sql_condition .= ($action_false !== false) ? ' ELSE ' . $action_false : ''; + $sql_condition .= ' END'; + return $sql_condition; + } + /** * Returns whether results of a query need to be buffered to run a transaction while iterating over them. *