From e808aac2627c35d50082f814d9778c4bf976011c Mon Sep 17 00:00:00 2001 From: Derek Allard Date: Sun, 6 Apr 2008 18:22:00 +0000 Subject: Added the ability to prevent escaping in having() clauses. --- system/database/DB_active_rec.php | 21 +++++++++++++-------- user_guide/changelog.html | 5 +++++ user_guide/database/active_record.html | 26 +++++++++++++++++--------- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php index bde43abf0..23a5a7adf 100644 --- a/system/database/DB_active_rec.php +++ b/system/database/DB_active_rec.php @@ -775,9 +775,9 @@ class CI_DB_active_record extends CI_DB_driver { * @param string * @return object */ - function having($key, $value = '') + function having($key, $value = '', $escape = TRUE) { - return $this->_having($key, $value, 'AND '); + return $this->_having($key, $value, 'AND ', $escape); } // -------------------------------------------------------------------- @@ -788,9 +788,9 @@ class CI_DB_active_record extends CI_DB_driver { * orhaving() has been deprecated */ - function orhaving($key, $value = '') + function orhaving($key, $value = '', $escape = TRUE) { - return $this->or_having($key, $value = ''); + return $this->or_having($key, $value = '', $escape); } // -------------------------------------------------------------------- @@ -804,9 +804,9 @@ class CI_DB_active_record extends CI_DB_driver { * @param string * @return object */ - function or_having($key, $value = '') + function or_having($key, $value = '', $escape = TRUE) { - return $this->_having($key, $value, 'OR '); + return $this->_having($key, $value, 'OR ', $escape); } // -------------------------------------------------------------------- @@ -822,7 +822,7 @@ class CI_DB_active_record extends CI_DB_driver { * @param string * @return object */ - function _having($key, $value = '', $type = 'AND ') + function _having($key, $value = '', $type = 'AND ', $escape = TRUE) { if ( ! is_array($key)) { @@ -832,7 +832,12 @@ class CI_DB_active_record extends CI_DB_driver { foreach ($key as $k => $v) { $prefix = (count($this->ar_having) == 0) ? '' : $type; - $k = $this->_protect_identifiers($k); + + if ($escape === TRUE) + { + $k = $this->_protect_identifiers($k); + } + if ($v != '') { diff --git a/user_guide/changelog.html b/user_guide/changelog.html index af51c0e24..62e4541e0 100644 --- a/user_guide/changelog.html +++ b/user_guide/changelog.html @@ -60,6 +60,11 @@ Change Log

Version 1.6.2

Release Date: not currently released