From 98c347de9f62a3427170f9f73a692d159765e8cf Mon Sep 17 00:00:00 2001
From: Nick Busey
Date: Thu, 2 Feb 2012 11:07:03 -0700
Subject: Adding equal to greater than, equal to less than form validators.
---
system/language/english/form_validation_lang.php | 48 ++++++++---------
system/libraries/Form_validation.php | 38 +++++++++++++-
.../source/libraries/form_validation.rst | 60 ++++++++++++----------
3 files changed, 94 insertions(+), 52 deletions(-)
diff --git a/system/language/english/form_validation_lang.php b/system/language/english/form_validation_lang.php
index 6afa37a29..2ee2cb9dd 100644
--- a/system/language/english/form_validation_lang.php
+++ b/system/language/english/form_validation_lang.php
@@ -25,29 +25,31 @@
* @filesource
*/
-$lang['required'] = "The %s field is required.";
-$lang['isset'] = "The %s field must have a value.";
-$lang['valid_email'] = "The %s field must contain a valid email address.";
-$lang['valid_emails'] = "The %s field must contain all valid email addresses.";
-$lang['valid_url'] = "The %s field must contain a valid URL.";
-$lang['valid_ip'] = "The %s field must contain a valid IP.";
-$lang['min_length'] = "The %s field must be at least %s characters in length.";
-$lang['max_length'] = "The %s field cannot exceed %s characters in length.";
-$lang['exact_length'] = "The %s field must be exactly %s characters in length.";
-$lang['alpha'] = "The %s field may only contain alphabetical characters.";
-$lang['alpha_numeric'] = "The %s field may only contain alpha-numeric characters.";
-$lang['alpha_dash'] = "The %s field may only contain alpha-numeric characters, underscores, and dashes.";
-$lang['numeric'] = "The %s field must contain only numbers.";
-$lang['is_numeric'] = "The %s field must contain only numeric characters.";
-$lang['integer'] = "The %s field must contain an integer.";
-$lang['regex_match'] = "The %s field is not in the correct format.";
-$lang['matches'] = "The %s field does not match the %s field.";
-$lang['is_unique'] = "The %s field must contain a unique value.";
-$lang['is_natural'] = "The %s field must contain only positive numbers.";
-$lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero.";
-$lang['decimal'] = "The %s field must contain a decimal number.";
-$lang['less_than'] = "The %s field must contain a number less than %s.";
-$lang['greater_than'] = "The %s field must contain a number greater than %s.";
+$lang['required'] = "The %s field is required.";
+$lang['isset'] = "The %s field must have a value.";
+$lang['valid_email'] = "The %s field must contain a valid email address.";
+$lang['valid_emails'] = "The %s field must contain all valid email addresses.";
+$lang['valid_url'] = "The %s field must contain a valid URL.";
+$lang['valid_ip'] = "The %s field must contain a valid IP.";
+$lang['min_length'] = "The %s field must be at least %s characters in length.";
+$lang['max_length'] = "The %s field cannot exceed %s characters in length.";
+$lang['exact_length'] = "The %s field must be exactly %s characters in length.";
+$lang['alpha'] = "The %s field may only contain alphabetical characters.";
+$lang['alpha_numeric'] = "The %s field may only contain alpha-numeric characters.";
+$lang['alpha_dash'] = "The %s field may only contain alpha-numeric characters, underscores, and dashes.";
+$lang['numeric'] = "The %s field must contain only numbers.";
+$lang['is_numeric'] = "The %s field must contain only numeric characters.";
+$lang['integer'] = "The %s field must contain an integer.";
+$lang['regex_match'] = "The %s field is not in the correct format.";
+$lang['matches'] = "The %s field does not match the %s field.";
+$lang['is_unique'] = "The %s field must contain a unique value.";
+$lang['is_natural'] = "The %s field must contain only positive numbers.";
+$lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero.";
+$lang['decimal'] = "The %s field must contain a decimal number.";
+$lang['less_than'] = "The %s field must contain a number less than %s.";
+$lang['equal_to_less_than'] = "The %s field must contain a number equal to or less than %s.";
+$lang['greater_than'] = "The %s field must contain a number greater than %s.";
+$lang['equal_to_greater_than'] = "The %s field must contain a number equal to or greater than %s.";
/* End of file form_validation_lang.php */
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index 0a6a2af0d..1b2907a08 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -1116,7 +1116,7 @@ class CI_Form_validation {
// --------------------------------------------------------------------
/**
- * Greather than
+ * Greater than
*
* @param string
* @return bool
@@ -1130,6 +1130,24 @@ class CI_Form_validation {
return $str > $min;
}
+ // --------------------------------------------------------------------
+
+ /**
+ * Equal to or Greater than
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function equal_to_greater_than($str, $min)
+ {
+ if ( ! is_numeric($str))
+ {
+ return FALSE;
+ }
+ return $str >= $min;
+ }
+
// --------------------------------------------------------------------
/**
@@ -1149,6 +1167,24 @@ class CI_Form_validation {
// --------------------------------------------------------------------
+ /**
+ * Equal to or Less than
+ *
+ * @access public
+ * @param string
+ * @return bool
+ */
+ function equal_to_less_than($str, $max)
+ {
+ if ( ! is_numeric($str))
+ {
+ return FALSE;
+ }
+ return $str <= $max;
+ }
+
+ // --------------------------------------------------------------------
+
/**
* Is a Natural number (0,1,2,3, etc.)
*
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index e7875bc22..185850b5a 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -823,34 +823,38 @@ Rule Reference
The following is a list of all the native rules that are available to
use:
-======================= ========== ============================================================================================= =======================
-Rule Parameter Description Example
-======================= ========== ============================================================================================= =======================
-**required** No Returns FALSE if the form element is empty.
-**matches** Yes Returns FALSE if the form element does not match the one in the parameter. matches[form_item]
-**is_unique** Yes Returns FALSE if the form element is not unique to the is_unique[table.field]
- table and field name in the parameter. is_unique[table.field]
-**max_length** Yes Returns FALSE if the form element is longer then the parameter value. max_length[12]
-**exact_length** Yes Returns FALSE if the form element is not exactly the parameter value. exact_length[8]
-**greater_than** Yes Returns FALSE if the form element is less than the parameter value or not numeric. greater_than[8]
-**less_than** Yes Returns FALSE if the form element is greater than the parameter value or not numeric. less_than[8]
-**alpha** No Returns FALSE if the form element contains anything other than alphabetical characters.
-**alpha_numeric** No Returns FALSE if the form element contains anything other than alpha-numeric characters.
-**alpha_dash** No Returns FALSE if the form element contains anything other than alpha-numeric characters,
- underscores or dashes.
-**numeric** No Returns FALSE if the form element contains anything other than numeric characters.
-**integer** No Returns FALSE if the form element contains anything other than an integer.
-**decimal** Yes Returns FALSE if the form element is not exactly the parameter value.
-**is_natural** No Returns FALSE if the form element contains anything other than a natural number:
- 0, 1, 2, 3, etc.
-**is_natural_no_zero** No Returns FALSE if the form element contains anything other than a natural
- number, but not zero: 1, 2, 3, etc.
-**is_unique** Yes Returns FALSE if the form element is not unique in a database table. is_unique[table.field]
-**valid_email** No Returns FALSE if the form element does not contain a valid email address.
-**valid_emails** No Returns FALSE if any value provided in a comma separated list is not a valid email.
-**valid_ip** No Returns FALSE if the supplied IP is not valid.
-**valid_base64** No Returns FALSE if the supplied string contains anything other than valid Base64 characters.
-======================= ========== ============================================================================================= =======================
+========================= ========== ============================================================================================= =======================
+Rule Parameter Description Example
+========================= ========== ============================================================================================= =======================
+**required** No Returns FALSE if the form element is empty.
+**matches** Yes Returns FALSE if the form element does not match the one in the parameter. matches[form_item]
+**is_unique** Yes Returns FALSE if the form element is not unique to the is_unique[table.field]
+ table and field name in the parameter. is_unique[table.field]
+**max_length** Yes Returns FALSE if the form element is longer then the parameter value. max_length[12]
+**exact_length** Yes Returns FALSE if the form element is not exactly the parameter value. exact_length[8]
+**greater_than** Yes Returns FALSE if the form element is less than the parameter value or not numeric. greater_than[8]
+**equal_to_greater_than** Yes Returns FALSE if the form element is not equal to or less than the parameter value, greater_than[8]
+ or not numeric.
+**less_than** Yes Returns FALSE if the form element is greater than the parameter value or not numeric. less_than[8]
+**equal_to_less_than** Yes Returns FALSE if the form element is not equal to or greater than the parameter value, less_than[8]
+ or not numeric.
+**alpha** No Returns FALSE if the form element contains anything other than alphabetical characters.
+**alpha_numeric** No Returns FALSE if the form element contains anything other than alpha-numeric characters.
+**alpha_dash** No Returns FALSE if the form element contains anything other than alpha-numeric characters,
+ underscores or dashes.
+**numeric** No Returns FALSE if the form element contains anything other than numeric characters.
+**integer** No Returns FALSE if the form element contains anything other than an integer.
+**decimal** Yes Returns FALSE if the form element is not exactly the parameter value.
+**is_natural** No Returns FALSE if the form element contains anything other than a natural number:
+ 0, 1, 2, 3, etc.
+**is_natural_no_zero** No Returns FALSE if the form element contains anything other than a natural
+ number, but not zero: 1, 2, 3, etc.
+**is_unique** Yes Returns FALSE if the form element is not unique in a database table. is_unique[table.field]
+**valid_email** No Returns FALSE if the form element does not contain a valid email address.
+**valid_emails** No Returns FALSE if any value provided in a comma separated list is not a valid email.
+**valid_ip** No Returns FALSE if the supplied IP is not valid.
+**valid_base64** No Returns FALSE if the supplied string contains anything other than valid Base64 characters.
+========================= ========== ============================================================================================= =======================
.. note:: These rules can also be called as discrete functions. For
example::
--
cgit v1.2.3-24-g4f1b
From c1931667cbc614a704f536beb882931af82241cd Mon Sep 17 00:00:00 2001
From: Nick Busey
Date: Mon, 6 Feb 2012 17:55:58 -0700
Subject: Renaming equal_to_greater_than to greater_than_equal_to,
equal_to_less_than to less_than_equal_to
---
system/language/english/form_validation_lang.php | 4 ++--
system/libraries/Form_validation.php | 4 ++--
user_guide_src/source/libraries/form_validation.rst | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/system/language/english/form_validation_lang.php b/system/language/english/form_validation_lang.php
index 2ee2cb9dd..7fa6934f5 100644
--- a/system/language/english/form_validation_lang.php
+++ b/system/language/english/form_validation_lang.php
@@ -47,9 +47,9 @@ $lang['is_natural'] = "The %s field must contain only positive numbers.";
$lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero.";
$lang['decimal'] = "The %s field must contain a decimal number.";
$lang['less_than'] = "The %s field must contain a number less than %s.";
-$lang['equal_to_less_than'] = "The %s field must contain a number equal to or less than %s.";
+$lang['less_than_equal_to'] = "The %s field must contain a number equal to or less than %s.";
$lang['greater_than'] = "The %s field must contain a number greater than %s.";
-$lang['equal_to_greater_than'] = "The %s field must contain a number equal to or greater than %s.";
+$lang['greater_than_equal_to'] = "The %s field must contain a number equal to or greater than %s.";
/* End of file form_validation_lang.php */
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index 1b2907a08..3ee3cf9df 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -1139,7 +1139,7 @@ class CI_Form_validation {
* @param string
* @return bool
*/
- function equal_to_greater_than($str, $min)
+ function greater_than_equal_to($str, $min)
{
if ( ! is_numeric($str))
{
@@ -1174,7 +1174,7 @@ class CI_Form_validation {
* @param string
* @return bool
*/
- function equal_to_less_than($str, $max)
+ function less_than_equal_to($str, $max)
{
if ( ! is_numeric($str))
{
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index 185850b5a..0ca6e767b 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -833,10 +833,10 @@ Rule Parameter Description
**max_length** Yes Returns FALSE if the form element is longer then the parameter value. max_length[12]
**exact_length** Yes Returns FALSE if the form element is not exactly the parameter value. exact_length[8]
**greater_than** Yes Returns FALSE if the form element is less than the parameter value or not numeric. greater_than[8]
-**equal_to_greater_than** Yes Returns FALSE if the form element is not equal to or less than the parameter value, greater_than[8]
+**greater_than_equal_to** Yes Returns FALSE if the form element is not equal to or less than the parameter value, greater_than[8]
or not numeric.
**less_than** Yes Returns FALSE if the form element is greater than the parameter value or not numeric. less_than[8]
-**equal_to_less_than** Yes Returns FALSE if the form element is not equal to or greater than the parameter value, less_than[8]
+**less_than_equal_to** Yes Returns FALSE if the form element is not equal to or greater than the parameter value, less_than[8]
or not numeric.
**alpha** No Returns FALSE if the form element contains anything other than alphabetical characters.
**alpha_numeric** No Returns FALSE if the form element contains anything other than alpha-numeric characters.
--
cgit v1.2.3-24-g4f1b
From d5c0172e02b99278f4928897c1489cd628a50e2d Mon Sep 17 00:00:00 2001
From: John Crepezzi
Date: Tue, 7 Feb 2012 19:06:46 -0500
Subject: Fix #1009 documentation fixed
---
system/language/english/form_validation_lang.php | 6 +++---
user_guide_src/source/libraries/form_validation.rst | 10 ++++++----
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/system/language/english/form_validation_lang.php b/system/language/english/form_validation_lang.php
index 7fa6934f5..ea589618a 100644
--- a/system/language/english/form_validation_lang.php
+++ b/system/language/english/form_validation_lang.php
@@ -47,10 +47,10 @@ $lang['is_natural'] = "The %s field must contain only positive numbers.";
$lang['is_natural_no_zero'] = "The %s field must contain a number greater than zero.";
$lang['decimal'] = "The %s field must contain a decimal number.";
$lang['less_than'] = "The %s field must contain a number less than %s.";
-$lang['less_than_equal_to'] = "The %s field must contain a number equal to or less than %s.";
+$lang['less_than_equal_to'] = "The %s field must contain a number less than or equal to %s.";
$lang['greater_than'] = "The %s field must contain a number greater than %s.";
-$lang['greater_than_equal_to'] = "The %s field must contain a number equal to or greater than %s.";
+$lang['greater_than_equal_to'] = "The %s field must contain a number greater than or equal to %s.";
/* End of file form_validation_lang.php */
-/* Location: ./system/language/english/form_validation_lang.php */
\ No newline at end of file
+/* Location: ./system/language/english/form_validation_lang.php */
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index 0ca6e767b..684051db5 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -832,11 +832,13 @@ Rule Parameter Description
table and field name in the parameter. is_unique[table.field]
**max_length** Yes Returns FALSE if the form element is longer then the parameter value. max_length[12]
**exact_length** Yes Returns FALSE if the form element is not exactly the parameter value. exact_length[8]
-**greater_than** Yes Returns FALSE if the form element is less than the parameter value or not numeric. greater_than[8]
-**greater_than_equal_to** Yes Returns FALSE if the form element is not equal to or less than the parameter value, greater_than[8]
+**greater_than** Yes Returns FALSE if the form element is less than or equal to the parameter value or not greater_than[8]
+ numeric.
+**greater_than_equal_to** Yes Returns FALSE if the form element is less than the parameter value, greater_than_equal_to[8]
or not numeric.
-**less_than** Yes Returns FALSE if the form element is greater than the parameter value or not numeric. less_than[8]
-**less_than_equal_to** Yes Returns FALSE if the form element is not equal to or greater than the parameter value, less_than[8]
+**less_than** Yes Returns FALSE if the form element is greater than or equal to the parameter value or less_than[8]
+ not numeric.
+**less_than_equal_to** Yes Returns FALSE if the form element is greater than the parameter value, less_than_equal_to[8]
or not numeric.
**alpha** No Returns FALSE if the form element contains anything other than alphabetical characters.
**alpha_numeric** No Returns FALSE if the form element contains anything other than alpha-numeric characters.
--
cgit v1.2.3-24-g4f1b
From 76e0435af10579afdc3ed4956aeafa83a17decd3 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Tue, 14 Feb 2012 11:55:17 -0500
Subject: First iteration of interbase driver
---
system/database/drivers/interbase/index.html | 10 +
.../drivers/interbase/interbase_driver.php | 676 +++++++++++++++++++++
.../database/drivers/interbase/interbase_forge.php | 262 ++++++++
.../drivers/interbase/interbase_result.php | 190 ++++++
.../drivers/interbase/interbase_utility.php | 108 ++++
user_guide_src/source/changelog.rst | 1 +
6 files changed, 1247 insertions(+)
create mode 100644 system/database/drivers/interbase/index.html
create mode 100644 system/database/drivers/interbase/interbase_driver.php
create mode 100644 system/database/drivers/interbase/interbase_forge.php
create mode 100644 system/database/drivers/interbase/interbase_result.php
create mode 100644 system/database/drivers/interbase/interbase_utility.php
diff --git a/system/database/drivers/interbase/index.html b/system/database/drivers/interbase/index.html
new file mode 100644
index 000000000..c942a79ce
--- /dev/null
+++ b/system/database/drivers/interbase/index.html
@@ -0,0 +1,10 @@
+
+
+ 403 Forbidden
+
+
+
+
Directory access is forbidden.
+
+
+
\ No newline at end of file
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
new file mode 100644
index 000000000..bc9cb8f08
--- /dev/null
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -0,0 +1,676 @@
+database, $this->username, $this->password, $this->charset))
+ {
+ log_message('error', $error);
+
+ if ($this->db_debug)
+ {
+ $this->display_error($error, '', TRUE);
+ }
+
+ return FALSE;
+ }
+
+ return $conn_id;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Persistent database connection
+ *
+ * @access private called by the base class
+ * @return resource
+ */
+ function db_pconnect()
+ {
+ if ( ! $conn_id = @ibase_pconnect($this->database, $this->username, $this->password, $this->charset))
+ {
+ log_message('error', $error);
+
+ if ($this->db_debug)
+ {
+ $this->display_error($error, '', TRUE);
+ }
+
+ return FALSE;
+ }
+
+ return $conn_id;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Reconnect
+ *
+ * Keep / reestablish the db connection if no queries have been
+ * sent for a length of time exceeding the server's idle timeout
+ *
+ * @access public
+ * @return void
+ */
+ function reconnect()
+ {
+ // not implemented in Interbase/Firebird
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Select the database
+ *
+ * @access private called by the base class
+ * @return resource
+ */
+ function db_select()
+ {
+ // Connection selects the database
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Set client character set
+ *
+ * @access public
+ * @param string
+ * @param string
+ * @return resource
+ */
+ function db_set_charset($charset, $collation)
+ {
+ // @todo - add support if needed
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Version number query string
+ *
+ * @access public
+ * @return string
+ */
+ function _version()
+ {
+ //@todo - add support if needed
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Execute the query
+ *
+ * @access private called by the base class
+ * @param string an SQL query
+ * @return resource
+ */
+ function _execute($sql)
+ {
+ $sql = $this->_prep_query($sql);
+ return @ibase_query($this->conn_id, $sql);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Prep the query
+ *
+ * If needed, each database adapter can prep the query string
+ *
+ * @access private called by execute()
+ * @param string an SQL query
+ * @return string
+ */
+ function _prep_query($sql)
+ {
+ return $sql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Begin Transaction
+ *
+ * @access public
+ * @return bool
+ */
+ function trans_begin($test_mode = FALSE)
+ {
+ if ( ! $this->trans_enabled)
+ {
+ return TRUE;
+ }
+
+ // When transactions are nested we only begin/commit/rollback the outermost ones
+ if ($this->_trans_depth > 0)
+ {
+ return TRUE;
+ }
+
+ // Reset the transaction failure flag.
+ // If the $test_mode flag is set to TRUE transactions will be rolled back
+ // even if the queries produce a successful result.
+ $this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;
+
+ $this->trans = @ibase_trans($this->conn_id);
+
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Commit Transaction
+ *
+ * @access public
+ * @return bool
+ */
+ function trans_commit()
+ {
+ if ( ! $this->trans_enabled)
+ {
+ return TRUE;
+ }
+
+ // When transactions are nested we only begin/commit/rollback the outermost ones
+ if ($this->_trans_depth > 0)
+ {
+ return TRUE;
+ }
+
+ @ibase_commit($this->trans);
+
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Rollback Transaction
+ *
+ * @access public
+ * @return bool
+ */
+ function trans_rollback()
+ {
+ if ( ! $this->trans_enabled)
+ {
+ return TRUE;
+ }
+
+ // When transactions are nested we only begin/commit/rollback the outermost ones
+ if ($this->_trans_depth > 0)
+ {
+ return TRUE;
+ }
+
+ @ibase_rollback($this->trans);
+
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Escape String
+ *
+ * @access public
+ * @param string
+ * @param bool whether or not the string will be used in a LIKE condition
+ * @return string
+ */
+ function escape_str($str, $like = FALSE)
+ {
+ if (is_array($str))
+ {
+ foreach ($str as $key => $val)
+ {
+ $str[$key] = $this->escape_str($val, $like);
+ }
+
+ return $str;
+ }
+
+ // escape LIKE condition wildcards
+ if ($like === TRUE)
+ {
+ $str = str_replace( array('%', '_', $this->_like_escape_chr),
+ array($this->_like_escape_chr.'%', $this->_like_escape_chr.'_', $this->_like_escape_chr.$this->_like_escape_chr),
+ $str);
+ }
+
+ return $str;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Affected Rows
+ *
+ * @access public
+ * @return integer
+ */
+ function affected_rows()
+ {
+ return @ibase_affected_rows($this->conn_id);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Insert ID
+ *
+ * @access public
+ * @return integer
+ */
+ function insert_id()
+ {
+ //@todo Implement manually
+ return 0;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * "Count All" query
+ *
+ * Generates a platform-specific query string that counts all records in
+ * the specified database
+ *
+ * @access public
+ * @param string
+ * @return string
+ */
+ function count_all($table = '')
+ {
+ if ($table == '')
+ {
+ return 0;
+ }
+
+ $query = $this->query($this->_count_string . $this->_protect_identifiers('numrows') . " FROM " . $this->_protect_identifiers($table, TRUE, NULL, FALSE));
+
+ if ($query->num_rows() == 0)
+ {
+ return 0;
+ }
+
+ $row = $query->row();
+ $this->_reset_select();
+ return (int) $row->numrows;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * List table query
+ *
+ * Generates a platform-specific query string so that the table names can be fetched
+ *
+ * @access private
+ * @param boolean
+ * @return string
+ */
+ function _list_tables($prefix_limit = FALSE)
+ {
+ $sql = <<dbprefix != '')
+ {
+ $sql .= " AND 'name' LIKE '".$this->escape_like_str($this->dbprefix)."%' ".sprintf($this->_like_escape_str, $this->_like_escape_chr);
+ }
+ return $sql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Show column query
+ *
+ * Generates a platform-specific query string so that the column names can be fetched
+ *
+ * @access public
+ * @param string the table name
+ * @return string
+ */
+ function _list_columns($table = '')
+ {
+ // Not supported
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Field data query
+ *
+ * Generates a platform-specific query so that the column data can be retrieved
+ *
+ * @access public
+ * @param string the table name
+ * @return object
+ */
+ function _field_data($table)
+ {
+ return "SELECT * FROM ".$table." LIMIT 1";
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * The error message string
+ *
+ * @access private
+ * @return string
+ */
+ function _error_message()
+ {
+ return ibase_errmsg();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * The error message number
+ *
+ * @access private
+ * @return integer
+ */
+ function _error_number()
+ {
+ return ibase_errcode();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Escape the SQL Identifiers
+ *
+ * This function escapes column and table names
+ *
+ * @access private
+ * @param string
+ * @return string
+ */
+ function _escape_identifiers($item)
+ {
+ foreach ($this->_reserved_identifiers as $id)
+ {
+ if (strpos($item, '.'.$id) !== FALSE)
+ {
+ $str = $this->_escape_char. str_replace('.', $this->_escape_char.'.', $item);
+
+ // remove duplicates if the user already included the escape
+ return preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str);
+ }
+ }
+
+ if (strpos($item, '.') !== FALSE)
+ {
+ $str = $this->_escape_char.str_replace('.', $this->_escape_char.'.'.$this->_escape_char, $item).$this->_escape_char;
+ }
+ else
+ {
+ $str = $this->_escape_char.$item.$this->_escape_char;
+ }
+
+ // remove duplicates if the user already included the escape
+ return preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * From Tables
+ *
+ * This function implicitly groups FROM tables so there is no confusion
+ * about operator precedence in harmony with SQL standards
+ *
+ * @access public
+ * @param type
+ * @return type
+ */
+ function _from_tables($tables)
+ {
+ if ( ! is_array($tables))
+ {
+ $tables = array($tables);
+ }
+
+ return '('.implode(', ', $tables).')';
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Insert statement
+ *
+ * Generates a platform-specific insert string from the supplied data
+ *
+ * @access public
+ * @param string the table name
+ * @param array the insert keys
+ * @param array the insert values
+ * @return string
+ */
+ function _insert($table, $keys, $values)
+ {
+ return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Update statement
+ *
+ * Generates a platform-specific update string from the supplied data
+ *
+ * @access public
+ * @param string the table name
+ * @param array the update data
+ * @param array the where clause
+ * @param array the orderby clause
+ * @param array the limit clause
+ * @return string
+ */
+ function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
+ {
+ foreach ($values as $key => $val)
+ {
+ $valstr[] = $key." = ".$val;
+ }
+
+ $limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
+
+ $orderby = (count($orderby) >= 1)?' ORDER BY '.implode(", ", $orderby):'';
+
+ $sql = "UPDATE ".$table." SET ".implode(', ', $valstr);
+
+ $sql .= ($where != '' AND count($where) >=1) ? " WHERE ".implode(" ", $where) : '';
+
+ $sql .= $orderby.$limit;
+
+ return $sql;
+ }
+
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Truncate statement
+ *
+ * Generates a platform-specific truncate string from the supplied data
+ * If the database does not support the truncate() command
+ * This function maps to "DELETE FROM table"
+ *
+ * @access public
+ * @param string the table name
+ * @return string
+ */
+ function _truncate($table)
+ {
+ return $this->_delete($table);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Delete statement
+ *
+ * Generates a platform-specific delete string from the supplied data
+ *
+ * @access public
+ * @param string the table name
+ * @param array the where clause
+ * @param string the limit clause
+ * @return string
+ */
+ function _delete($table, $where = array(), $like = array(), $limit = FALSE)
+ {
+ $conditions = '';
+
+ if (count($where) > 0 OR count($like) > 0)
+ {
+ $conditions = "\nWHERE ";
+ $conditions .= implode("\n", $this->ar_where);
+
+ if (count($where) > 0 && count($like) > 0)
+ {
+ $conditions .= " AND ";
+ }
+ $conditions .= implode("\n", $like);
+ }
+
+ $limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
+
+ return "DELETE FROM ".$table.$conditions.$limit;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Limit string
+ *
+ * Generates a platform-specific LIMIT clause
+ *
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
+ */
+ function _limit($sql, $limit, $offset)
+ {
+ if ($offset == 0)
+ {
+ $offset = '';
+ }
+ else
+ {
+ $offset .= ", ";
+ }
+
+ return $sql."LIMIT ".$offset.$limit;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Close DB Connection
+ *
+ * @access public
+ * @param resource
+ * @return void
+ */
+ function _close($conn_id)
+ {
+ @ibase_close($conn_id);
+ }
+
+
+}
+
+
+/* End of file interbase_driver.php */
+/* Location: ./system/database/drivers/interbase/interbase_driver.php */
\ No newline at end of file
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
new file mode 100644
index 000000000..36d980b67
--- /dev/null
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -0,0 +1,262 @@
+conn_id);
+ }
+ // --------------------------------------------------------------------
+
+ /**
+ * Create Table
+ *
+ * @access private
+ * @param string the table name
+ * @param array the fields
+ * @param mixed primary key(s)
+ * @param mixed key(s)
+ * @param boolean should 'IF NOT EXISTS' be added to the SQL
+ * @return bool
+ */
+ function _create_table($table, $fields, $primary_keys, $keys, $if_not_exists)
+ {
+ $sql = 'CREATE TABLE ';
+
+ $sql .= $this->db->_escape_identifiers($table)."(";
+ $current_field_count = 0;
+
+ foreach ($fields as $field=>$attributes)
+ {
+ // Numeric field names aren't allowed in databases, so if the key is
+ // numeric, we know it was assigned by PHP and the developer manually
+ // entered the field information, so we'll simply add it to the list
+ if (is_numeric($field))
+ {
+ $sql .= "\n\t$attributes";
+ }
+ else
+ {
+ $attributes = array_change_key_case($attributes, CASE_UPPER);
+
+ $sql .= "\n\t".$this->db->_protect_identifiers($field);
+
+ $sql .= ' '.$attributes['TYPE'];
+
+ if (array_key_exists('CONSTRAINT', $attributes))
+ {
+ $sql .= '('.$attributes['CONSTRAINT'].')';
+ }
+
+ if (array_key_exists('UNSIGNED', $attributes) && $attributes['UNSIGNED'] === TRUE)
+ {
+ $sql .= ' UNSIGNED';
+ }
+
+ if (array_key_exists('DEFAULT', $attributes))
+ {
+ $sql .= ' DEFAULT \''.$attributes['DEFAULT'].'\'';
+ }
+
+ if (array_key_exists('NULL', $attributes) && $attributes['NULL'] === TRUE)
+ {
+ $sql .= ' NULL';
+ }
+ else
+ {
+ $sql .= ' NOT NULL';
+ }
+
+ if (array_key_exists('AUTO_INCREMENT', $attributes) && $attributes['AUTO_INCREMENT'] === TRUE)
+ {
+ $sql .= ' AUTO_INCREMENT';
+ }
+ }
+
+ // don't add a comma on the end of the last field
+ if (++$current_field_count < count($fields))
+ {
+ $sql .= ',';
+ }
+ }
+
+ if (count($primary_keys) > 0)
+ {
+ $primary_keys = $this->db->_protect_identifiers($primary_keys);
+ $sql .= ",\n\tPRIMARY KEY (" . implode(', ', $primary_keys) . ")";
+ }
+
+ if (is_array($keys) && count($keys) > 0)
+ {
+ foreach ($keys as $key)
+ {
+ if (is_array($key))
+ {
+ $key = $this->db->_protect_identifiers($key);
+ }
+ else
+ {
+ $key = array($this->db->_protect_identifiers($key));
+ }
+
+ $sql .= ",\n\tUNIQUE (" . implode(', ', $key) . ")";
+ }
+ }
+
+ $sql .= "\n)";
+
+ return $sql;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Drop Table
+ *
+ * @access private
+ * @return bool
+ */
+ function _drop_table($table)
+ {
+ if ($this->db->db_debug)
+ {
+ return $this->db->display_error('db_unsuported_feature');
+ }
+ return array();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Alter table query
+ *
+ * Generates a platform-specific query so that a table can be altered
+ * Called by add_column(), drop_column(), and column_alter(),
+ *
+ * @access private
+ * @param string the ALTER type (ADD, DROP, CHANGE)
+ * @param string the column name
+ * @param string the table name
+ * @param string the column definition
+ * @param string the default value
+ * @param boolean should 'NOT NULL' be added
+ * @param string the field after which we should add the new field
+ * @return object
+ */
+ function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
+ {
+ $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
+
+ // DROP has everything it needs now.
+ /*if ($alter_type == 'DROP')
+ {
+ // SQLite does not support dropping columns
+ // http://www.sqlite.org/omitted.html
+ // http://www.sqlite.org/faq.html#q11
+ return FALSE;
+ }*/
+
+ $sql .= " $column_definition";
+
+ if ($default_value != '')
+ {
+ $sql .= " DEFAULT \"$default_value\"";
+ }
+
+ if ($null === NULL)
+ {
+ $sql .= ' NULL';
+ }
+ else
+ {
+ $sql .= ' NOT NULL';
+ }
+
+ if ($after_field != '')
+ {
+ $sql .= ' AFTER ' . $this->db->_protect_identifiers($after_field);
+ }
+
+ return $sql;
+
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Rename a table
+ *
+ * Generates a platform-specific query so that a table can be renamed
+ *
+ * @access private
+ * @param string the old table name
+ * @param string the new table name
+ * @return string
+ */
+ function _rename_table($table_name, $new_table_name)
+ {
+ $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name)." RENAME TO ".$this->db->_protect_identifiers($new_table_name);
+ return $sql;
+ }
+}
+
+/* End of file interbase_forge.php */
+/* Location: ./system/database/drivers/interbase/interbase_forge.php */
\ No newline at end of file
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
new file mode 100644
index 000000000..d811fc608
--- /dev/null
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -0,0 +1,190 @@
+result_id))
+ {
+ $count++;
+ }
+
+ return $count;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Number of fields in the result set
+ *
+ * @access public
+ * @return integer
+ */
+ function num_fields()
+ {
+ return @ibase_num_fields($this->result_id);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Fetch Field Names
+ *
+ * Generates an array of column names
+ *
+ * @access public
+ * @return array
+ */
+ function list_fields()
+ {
+ $field_names = array();
+ for ($i = 0; $i < $this->num_fields(); $i++)
+ {
+ $info = ibase_field_info($this->result_id, $i);
+ $field_names[] = $info['name'];
+ }
+
+ return $field_names;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Field data
+ *
+ * Generates an array of objects containing field meta-data
+ *
+ * @access public
+ * @return array
+ */
+ function field_data()
+ {
+
+ $retval = array();
+ for ($i = 0; $i < $this->num_fields(); $i++)
+ {
+ $info = ibase_field_info($this->result_id, $i);
+
+ $F = new stdClass();
+ $F->name = $info['name'];
+ $F->type = $info['type'];
+ $F->max_length = $info['length'];
+ $F->primary_key = 0;
+ $F->default = '';
+
+ $retval[] = $F;
+ }
+
+ return $retval;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Free the result
+ *
+ * @return null
+ */
+ function free_result()
+ {
+ @ibase_free_result($this->result_id);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Data Seek
+ *
+ * Moves the internal pointer to the desired offset. We call
+ * this internally before fetching results to make sure the
+ * result set starts at zero
+ *
+ * @access private
+ * @return array
+ */
+ function _data_seek($n = 0)
+ {
+ //Interbase driver doesn't implement a sutable function
+ return array();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Result - associative array
+ *
+ * Returns the result set as an array
+ *
+ * @access private
+ * @return array
+ */
+ function _fetch_assoc()
+ {
+ return @ibase_fetch_assoc($this->result_id);
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Result - object
+ *
+ * Returns the result set as an object
+ *
+ * @access private
+ * @return object
+ */
+ function _fetch_object()
+ {
+ return @ibase_fetch_object($this->result_id);
+ }
+
+}
+
+
+/* End of file interbase_result.php */
+/* Location: ./system/database/drivers/interbase/interbase_result.php */
\ No newline at end of file
diff --git a/system/database/drivers/interbase/interbase_utility.php b/system/database/drivers/interbase/interbase_utility.php
new file mode 100644
index 000000000..533a269b2
--- /dev/null
+++ b/system/database/drivers/interbase/interbase_utility.php
@@ -0,0 +1,108 @@
+db_debug)
+ {
+ return $this->db->display_error('db_unsuported_feature');
+ }
+ return array();
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Optimize table query
+ *
+ * Is optimization even supported in Interbase/Firebird?
+ *
+ * @access private
+ * @param string the table name
+ * @return object
+ */
+ function _optimize_table($table)
+ {
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Repair table query
+ *
+ * Table repairs are not supported in Interbase/Firebird
+ *
+ * @access private
+ * @param string the table name
+ * @return object
+ */
+ function _repair_table($table)
+ {
+ return FALSE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Interbase/Firebird Export
+ *
+ * @access private
+ * @param array Preferences
+ * @return mixed
+ */
+ function _backup($params = array())
+ {
+ // Currently unsupported
+ return $this->db->display_error('db_unsuported_feature');
+ }
+}
+
+/* End of file interbase_utility.php */
+/* Location: ./system/database/drivers/interbase/interbase_utility.php */
\ No newline at end of file
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index faea35872..1e6248f63 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -51,6 +51,7 @@ Release Date: Not Released
- MySQLi driver now supports persistent connections when running on PHP >= 5.3.
- Added dsn if the group connections in the config use PDO or any driver which need DSN.
- Improved PDO database support.
+ - Added Interbase/Firebird database support via the "interbase" driver
- Libraries
--
cgit v1.2.3-24-g4f1b
From 4be822bcca94273967abf010ef67f64ead5e6bf2 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Tue, 14 Feb 2012 12:07:34 -0500
Subject: Added public declarations
---
.../drivers/interbase/interbase_driver.php | 62 +++++++++++-----------
.../database/drivers/interbase/interbase_forge.php | 12 ++---
.../drivers/interbase/interbase_result.php | 16 +++---
.../drivers/interbase/interbase_utility.php | 8 +--
4 files changed, 49 insertions(+), 49 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index bc9cb8f08..671b128ea 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -70,7 +70,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access private called by the base class
* @return resource
*/
- function db_connect()
+ public function db_connect()
{
if ( ! $conn_id = @ibase_connect($this->database, $this->username, $this->password, $this->charset))
{
@@ -95,7 +95,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access private called by the base class
* @return resource
*/
- function db_pconnect()
+ public function db_pconnect()
{
if ( ! $conn_id = @ibase_pconnect($this->database, $this->username, $this->password, $this->charset))
{
@@ -123,7 +123,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return void
*/
- function reconnect()
+ public function reconnect()
{
// not implemented in Interbase/Firebird
}
@@ -136,7 +136,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access private called by the base class
* @return resource
*/
- function db_select()
+ public function db_select()
{
// Connection selects the database
return TRUE;
@@ -152,7 +152,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param string
* @return resource
*/
- function db_set_charset($charset, $collation)
+ public function db_set_charset($charset, $collation)
{
// @todo - add support if needed
return TRUE;
@@ -166,7 +166,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return string
*/
- function _version()
+ public function _version()
{
//@todo - add support if needed
return TRUE;
@@ -181,7 +181,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param string an SQL query
* @return resource
*/
- function _execute($sql)
+ public function _execute($sql)
{
$sql = $this->_prep_query($sql);
return @ibase_query($this->conn_id, $sql);
@@ -198,7 +198,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param string an SQL query
* @return string
*/
- function _prep_query($sql)
+ public function _prep_query($sql)
{
return $sql;
}
@@ -211,7 +211,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return bool
*/
- function trans_begin($test_mode = FALSE)
+ public function trans_begin($test_mode = FALSE)
{
if ( ! $this->trans_enabled)
{
@@ -242,7 +242,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return bool
*/
- function trans_commit()
+ public function trans_commit()
{
if ( ! $this->trans_enabled)
{
@@ -268,7 +268,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return bool
*/
- function trans_rollback()
+ public function trans_rollback()
{
if ( ! $this->trans_enabled)
{
@@ -296,7 +296,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param bool whether or not the string will be used in a LIKE condition
* @return string
*/
- function escape_str($str, $like = FALSE)
+ public function escape_str($str, $like = FALSE)
{
if (is_array($str))
{
@@ -327,7 +327,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return integer
*/
- function affected_rows()
+ public function affected_rows()
{
return @ibase_affected_rows($this->conn_id);
}
@@ -340,7 +340,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @access public
* @return integer
*/
- function insert_id()
+ public function insert_id()
{
//@todo Implement manually
return 0;
@@ -358,7 +358,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param string
* @return string
*/
- function count_all($table = '')
+ public function count_all($table = '')
{
if ($table == '')
{
@@ -388,7 +388,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param boolean
* @return string
*/
- function _list_tables($prefix_limit = FALSE)
+ public function _list_tables($prefix_limit = FALSE)
{
$sql = <<_reserved_identifiers as $id)
{
@@ -504,14 +504,14 @@ SQL;
/**
* From Tables
*
- * This function implicitly groups FROM tables so there is no confusion
+ * This public function implicitly groups FROM tables so there is no confusion
* about operator precedence in harmony with SQL standards
*
* @access public
* @param type
* @return type
*/
- function _from_tables($tables)
+ public function _from_tables($tables)
{
if ( ! is_array($tables))
{
@@ -534,7 +534,7 @@ SQL;
* @param array the insert values
* @return string
*/
- function _insert($table, $keys, $values)
+ public function _insert($table, $keys, $values)
{
return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
@@ -554,7 +554,7 @@ SQL;
* @param array the limit clause
* @return string
*/
- function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
+ public function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
{
foreach ($values as $key => $val)
{
@@ -582,13 +582,13 @@ SQL;
*
* Generates a platform-specific truncate string from the supplied data
* If the database does not support the truncate() command
- * This function maps to "DELETE FROM table"
+ * This public function maps to "DELETE FROM table"
*
* @access public
* @param string the table name
* @return string
*/
- function _truncate($table)
+ public function _truncate($table)
{
return $this->_delete($table);
}
@@ -606,7 +606,7 @@ SQL;
* @param string the limit clause
* @return string
*/
- function _delete($table, $where = array(), $like = array(), $limit = FALSE)
+ public function _delete($table, $where = array(), $like = array(), $limit = FALSE)
{
$conditions = '';
@@ -640,7 +640,7 @@ SQL;
* @param integer the offset value
* @return string
*/
- function _limit($sql, $limit, $offset)
+ public function _limit($sql, $limit, $offset)
{
if ($offset == 0)
{
@@ -663,7 +663,7 @@ SQL;
* @param resource
* @return void
*/
- function _close($conn_id)
+ public function _close($conn_id)
{
@ibase_close($conn_id);
}
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index 36d980b67..815107d85 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -43,7 +43,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the database name
* @return bool
*/
- function _create_database()
+ public function _create_database()
{
// In Interbase/Firebird, a database is created when you connect to the database.
// We'll return TRUE so that an error isn't generated
@@ -60,7 +60,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* - the current db is dropped
* @return bool
*/
- function _drop_database($name='')
+ public function _drop_database($name='')
{
return ibase_drop_db($this->conn_id);
}
@@ -77,7 +77,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param boolean should 'IF NOT EXISTS' be added to the SQL
* @return bool
*/
- function _create_table($table, $fields, $primary_keys, $keys, $if_not_exists)
+ public function _create_table($table, $fields, $primary_keys, $keys, $if_not_exists)
{
$sql = 'CREATE TABLE ';
@@ -174,7 +174,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @access private
* @return bool
*/
- function _drop_table($table)
+ public function _drop_table($table)
{
if ($this->db->db_debug)
{
@@ -201,7 +201,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the field after which we should add the new field
* @return object
*/
- function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
+ public function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
{
$sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
@@ -251,7 +251,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the new table name
* @return string
*/
- function _rename_table($table_name, $new_table_name)
+ public function _rename_table($table_name, $new_table_name)
{
$sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name)." RENAME TO ".$this->db->_protect_identifiers($new_table_name);
return $sql;
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index d811fc608..9d827895d 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -44,7 +44,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access public
* @return integer
*/
- function num_rows()
+ public function num_rows()
{
//Will have to manually calculate :(
$count = 0;
@@ -65,7 +65,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access public
* @return integer
*/
- function num_fields()
+ public function num_fields()
{
return @ibase_num_fields($this->result_id);
}
@@ -80,7 +80,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access public
* @return array
*/
- function list_fields()
+ public function list_fields()
{
$field_names = array();
for ($i = 0; $i < $this->num_fields(); $i++)
@@ -102,7 +102,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access public
* @return array
*/
- function field_data()
+ public function field_data()
{
$retval = array();
@@ -130,7 +130,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* @return null
*/
- function free_result()
+ public function free_result()
{
@ibase_free_result($this->result_id);
}
@@ -147,7 +147,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access private
* @return array
*/
- function _data_seek($n = 0)
+ public function _data_seek($n = 0)
{
//Interbase driver doesn't implement a sutable function
return array();
@@ -163,7 +163,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access private
* @return array
*/
- function _fetch_assoc()
+ public function _fetch_assoc()
{
return @ibase_fetch_assoc($this->result_id);
}
@@ -178,7 +178,7 @@ class CI_DB_interbase_result extends CI_DB_result {
* @access private
* @return object
*/
- function _fetch_object()
+ public function _fetch_object()
{
return @ibase_fetch_object($this->result_id);
}
diff --git a/system/database/drivers/interbase/interbase_utility.php b/system/database/drivers/interbase/interbase_utility.php
index 533a269b2..d90ecae71 100644
--- a/system/database/drivers/interbase/interbase_utility.php
+++ b/system/database/drivers/interbase/interbase_utility.php
@@ -47,7 +47,7 @@ class CI_DB_interbase_utility extends CI_DB_utility {
* @access private
* @return bool
*/
- function _list_databases()
+ public function _list_databases()
{
if ($this->db_debug)
{
@@ -67,7 +67,7 @@ class CI_DB_interbase_utility extends CI_DB_utility {
* @param string the table name
* @return object
*/
- function _optimize_table($table)
+ public function _optimize_table($table)
{
return FALSE;
}
@@ -83,7 +83,7 @@ class CI_DB_interbase_utility extends CI_DB_utility {
* @param string the table name
* @return object
*/
- function _repair_table($table)
+ public function _repair_table($table)
{
return FALSE;
}
@@ -97,7 +97,7 @@ class CI_DB_interbase_utility extends CI_DB_utility {
* @param array Preferences
* @return mixed
*/
- function _backup($params = array())
+ public function _backup($params = array())
{
// Currently unsupported
return $this->db->display_error('db_unsuported_feature');
--
cgit v1.2.3-24-g4f1b
From 2d6ae793daf6eafe72c33f2bc39e18a22f699264 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Tue, 14 Feb 2012 15:00:52 -0500
Subject: Various fixes
---
.../drivers/interbase/interbase_driver.php | 226 +++++++++++----------
1 file changed, 115 insertions(+), 111 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 671b128ea..ff9f2d5bf 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -14,15 +14,15 @@
* http://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to obtain it
* through the world wide web, please send an email to
- * licensing@ellislab.com so we can send you a copy immediately.
+ * licensingellislab.com so we can send you a copy immediately.
*
- * @package CodeIgniter
- * @author EllisLab Dev Team
- * @copyright Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
- * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
- * @link http://codeigniter.com
- * @since Version 3.0
- * @filesource
+ * package CodeIgniter
+ * author EllisLab Dev Team
+ * copyright Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
+ * license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ * link http://codeigniter.com
+ * since Version 3.0
+ * filesource
*/
// ------------------------------------------------------------------------
@@ -36,11 +36,11 @@
* creates dynamically based on whether the active record
* class is being used or not.
*
- * @package CodeIgniter
- * @subpackage Drivers
- * @category Database
- * @author EllisLab Dev Team
- * @link http://codeigniter.com/user_guide/database/
+ * package CodeIgniter
+ * subpackage Drivers
+ * category Database
+ * author EllisLab Dev Team
+ * link http://codeigniter.com/user_guide/database/
*/
class CI_DB_interbase_driver extends CI_DB {
@@ -67,12 +67,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Non-persistent database connection
*
- * @access private called by the base class
- * @return resource
+ * access private called by the base class
+ * return resource
*/
public function db_connect()
{
- if ( ! $conn_id = @ibase_connect($this->database, $this->username, $this->password, $this->charset))
+ if ( ! $conn_id = ibase_connect($this->database, $this->username, $this->password, $this->char_set))
{
log_message('error', $error);
@@ -92,12 +92,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Persistent database connection
*
- * @access private called by the base class
- * @return resource
+ * access private called by the base class
+ * return resource
*/
public function db_pconnect()
{
- if ( ! $conn_id = @ibase_pconnect($this->database, $this->username, $this->password, $this->charset))
+ if ( ! $conn_id = ibase_pconnect($this->database, $this->username, $this->password, $this->char_set))
{
log_message('error', $error);
@@ -120,8 +120,8 @@ class CI_DB_interbase_driver extends CI_DB {
* Keep / reestablish the db connection if no queries have been
* sent for a length of time exceeding the server's idle timeout
*
- * @access public
- * @return void
+ * access public
+ * return void
*/
public function reconnect()
{
@@ -133,8 +133,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Select the database
*
- * @access private called by the base class
- * @return resource
+ * access private called by the base class
+ * return resource
*/
public function db_select()
{
@@ -147,14 +147,14 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Set client character set
*
- * @access public
- * @param string
- * @param string
- * @return resource
+ * access public
+ * param string
+ * param string
+ * return resource
*/
public function db_set_charset($charset, $collation)
{
- // @todo - add support if needed
+ // todo - add support if needed
return TRUE;
}
@@ -163,12 +163,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Version number query string
*
- * @access public
- * @return string
+ * access public
+ * return string
*/
public function _version()
{
- //@todo - add support if needed
+ //todo - add support if needed
return TRUE;
}
@@ -177,14 +177,14 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Execute the query
*
- * @access private called by the base class
- * @param string an SQL query
- * @return resource
+ * access private called by the base class
+ * param string an SQL query
+ * return resource
*/
public function _execute($sql)
{
$sql = $this->_prep_query($sql);
- return @ibase_query($this->conn_id, $sql);
+ return ibase_query($this->conn_id, $sql);
}
// --------------------------------------------------------------------
@@ -194,9 +194,9 @@ class CI_DB_interbase_driver extends CI_DB {
*
* If needed, each database adapter can prep the query string
*
- * @access private called by execute()
- * @param string an SQL query
- * @return string
+ * access private called by execute()
+ * param string an SQL query
+ * return string
*/
public function _prep_query($sql)
{
@@ -208,8 +208,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Begin Transaction
*
- * @access public
- * @return bool
+ * access public
+ * return bool
*/
public function trans_begin($test_mode = FALSE)
{
@@ -229,7 +229,7 @@ class CI_DB_interbase_driver extends CI_DB {
// even if the queries produce a successful result.
$this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;
- $this->trans = @ibase_trans($this->conn_id);
+ $this->trans = ibase_trans($this->conn_id);
return TRUE;
}
@@ -239,8 +239,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Commit Transaction
*
- * @access public
- * @return bool
+ * access public
+ * return bool
*/
public function trans_commit()
{
@@ -255,7 +255,7 @@ class CI_DB_interbase_driver extends CI_DB {
return TRUE;
}
- @ibase_commit($this->trans);
+ ibase_commit($this->trans);
return TRUE;
}
@@ -265,8 +265,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Rollback Transaction
*
- * @access public
- * @return bool
+ * access public
+ * return bool
*/
public function trans_rollback()
{
@@ -281,7 +281,7 @@ class CI_DB_interbase_driver extends CI_DB {
return TRUE;
}
- @ibase_rollback($this->trans);
+ ibase_rollback($this->trans);
return TRUE;
}
@@ -291,10 +291,10 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Escape String
*
- * @access public
- * @param string
- * @param bool whether or not the string will be used in a LIKE condition
- * @return string
+ * access public
+ * param string
+ * param bool whether or not the string will be used in a LIKE condition
+ * return string
*/
public function escape_str($str, $like = FALSE)
{
@@ -324,12 +324,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Affected Rows
*
- * @access public
- * @return integer
+ * access public
+ * return integer
*/
public function affected_rows()
{
- return @ibase_affected_rows($this->conn_id);
+ return ibase_affected_rows($this->conn_id);
}
// --------------------------------------------------------------------
@@ -337,12 +337,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Insert ID
*
- * @access public
- * @return integer
+ * access public
+ * return integer
*/
public function insert_id()
{
- //@todo Implement manually
+ //todo Implement manually
return 0;
}
@@ -354,9 +354,9 @@ class CI_DB_interbase_driver extends CI_DB {
* Generates a platform-specific query string that counts all records in
* the specified database
*
- * @access public
- * @param string
- * @return string
+ * access public
+ * param string
+ * return string
*/
public function count_all($table = '')
{
@@ -384,9 +384,9 @@ class CI_DB_interbase_driver extends CI_DB {
*
* Generates a platform-specific query string so that the table names can be fetched
*
- * @access private
- * @param boolean
- * @return string
+ * access private
+ * param boolean
+ * return string
*/
public function _list_tables($prefix_limit = FALSE)
{
@@ -410,9 +410,9 @@ SQL;
*
* Generates a platform-specific query string so that the column names can be fetched
*
- * @access public
- * @param string the table name
- * @return string
+ * access public
+ * param string the table name
+ * return string
*/
public function _list_columns($table = '')
{
@@ -427,9 +427,9 @@ SQL;
*
* Generates a platform-specific query so that the column data can be retrieved
*
- * @access public
- * @param string the table name
- * @return object
+ * access public
+ * param string the table name
+ * return object
*/
public function _field_data($table)
{
@@ -441,8 +441,8 @@ SQL;
/**
* The error message string
*
- * @access private
- * @return string
+ * access private
+ * return string
*/
public function _error_message()
{
@@ -454,8 +454,8 @@ SQL;
/**
* The error message number
*
- * @access private
- * @return integer
+ * access private
+ * return integer
*/
public function _error_number()
{
@@ -469,9 +469,9 @@ SQL;
*
* This public function escapes column and table names
*
- * @access private
- * @param string
- * @return string
+ * access private
+ * param string
+ * return string
*/
public function _escape_identifiers($item)
{
@@ -496,7 +496,7 @@ SQL;
}
// remove duplicates if the user already included the escape
- return preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str);
+ return strtoupper(preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str));
}
// --------------------------------------------------------------------
@@ -507,9 +507,9 @@ SQL;
* This public function implicitly groups FROM tables so there is no confusion
* about operator precedence in harmony with SQL standards
*
- * @access public
- * @param type
- * @return type
+ * access public
+ * param type
+ * return type
*/
public function _from_tables($tables)
{
@@ -518,7 +518,7 @@ SQL;
$tables = array($tables);
}
- return '('.implode(', ', $tables).')';
+ return strtolower(implode(', ', $tables));
}
// --------------------------------------------------------------------
@@ -528,15 +528,15 @@ SQL;
*
* Generates a platform-specific insert string from the supplied data
*
- * @access public
- * @param string the table name
- * @param array the insert keys
- * @param array the insert values
- * @return string
+ * access public
+ * param string the table name
+ * param array the insert keys
+ * param array the insert values
+ * return string
*/
public function _insert($table, $keys, $values)
{
- return "INSERT INTO ".$table." (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO ".strtolower($table)." (".strtoupper(implode(', ', $keys)).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -546,16 +546,18 @@ SQL;
*
* Generates a platform-specific update string from the supplied data
*
- * @access public
- * @param string the table name
- * @param array the update data
- * @param array the where clause
- * @param array the orderby clause
- * @param array the limit clause
- * @return string
+ * access public
+ * param string the table name
+ * param array the update data
+ * param array the where clause
+ * param array the orderby clause
+ * param array the limit clause
+ * return string
*/
public function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
{
+ $table = strtolower($table);
+
foreach ($values as $key => $val)
{
$valstr[] = $key." = ".$val;
@@ -584,9 +586,9 @@ SQL;
* If the database does not support the truncate() command
* This public function maps to "DELETE FROM table"
*
- * @access public
- * @param string the table name
- * @return string
+ * access public
+ * param string the table name
+ * return string
*/
public function _truncate($table)
{
@@ -600,14 +602,16 @@ SQL;
*
* Generates a platform-specific delete string from the supplied data
*
- * @access public
- * @param string the table name
- * @param array the where clause
- * @param string the limit clause
- * @return string
+ * access public
+ * param string the table name
+ * param array the where clause
+ * param string the limit clause
+ * return string
*/
public function _delete($table, $where = array(), $like = array(), $limit = FALSE)
{
+ $table = strtolower($table);
+
$conditions = '';
if (count($where) > 0 OR count($like) > 0)
@@ -634,11 +638,11 @@ SQL;
*
* Generates a platform-specific LIMIT clause
*
- * @access public
- * @param string the sql query string
- * @param integer the number of rows to limit the query to
- * @param integer the offset value
- * @return string
+ * access public
+ * param string the sql query string
+ * param integer the number of rows to limit the query to
+ * param integer the offset value
+ * return string
*/
public function _limit($sql, $limit, $offset)
{
@@ -659,13 +663,13 @@ SQL;
/**
* Close DB Connection
*
- * @access public
- * @param resource
- * @return void
+ * access public
+ * param resource
+ * return void
*/
public function _close($conn_id)
{
- @ibase_close($conn_id);
+ ibase_close($conn_id);
}
--
cgit v1.2.3-24-g4f1b
From 7221f9455b3ffe89474d1728583b656c176b5ba4 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Tue, 14 Feb 2012 15:02:33 -0500
Subject: Restored '@' characters
---
.../drivers/interbase/interbase_driver.php | 218 ++++++++++-----------
1 file changed, 108 insertions(+), 110 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index ff9f2d5bf..525294db4 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -14,15 +14,15 @@
* http://opensource.org/licenses/OSL-3.0
* If you did not receive a copy of the license and are unable to obtain it
* through the world wide web, please send an email to
- * licensingellislab.com so we can send you a copy immediately.
+ * licensing@ellislab.com so we can send you a copy immediately.
*
- * package CodeIgniter
- * author EllisLab Dev Team
- * copyright Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
- * license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
- * link http://codeigniter.com
- * since Version 3.0
- * filesource
+ * @package CodeIgniter
+ * @author EllisLab Dev Team
+ * @copyright Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
+ * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
+ * @link http://codeigniter.com
+ * @since Version 3.0
+ * @filesource
*/
// ------------------------------------------------------------------------
@@ -36,11 +36,11 @@
* creates dynamically based on whether the active record
* class is being used or not.
*
- * package CodeIgniter
- * subpackage Drivers
- * category Database
- * author EllisLab Dev Team
- * link http://codeigniter.com/user_guide/database/
+ * @package CodeIgniter
+ * @subpackage Drivers
+ * @category Database
+ * @author EllisLab Dev Team
+ * @link http://codeigniter.com/user_guide/database/
*/
class CI_DB_interbase_driver extends CI_DB {
@@ -67,12 +67,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Non-persistent database connection
*
- * access private called by the base class
- * return resource
+ * @access private called by the base class
+ * @return resource
*/
public function db_connect()
{
- if ( ! $conn_id = ibase_connect($this->database, $this->username, $this->password, $this->char_set))
+ if ( ! $conn_id = @ibase_connect($this->database, $this->username, $this->password, $this->char_set))
{
log_message('error', $error);
@@ -92,12 +92,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Persistent database connection
*
- * access private called by the base class
- * return resource
+ * @access private called by the base class
+ * @return resource
*/
public function db_pconnect()
{
- if ( ! $conn_id = ibase_pconnect($this->database, $this->username, $this->password, $this->char_set))
+ if ( ! $conn_id = @ibase_pconnect($this->database, $this->username, $this->password, $this->char_set))
{
log_message('error', $error);
@@ -120,8 +120,8 @@ class CI_DB_interbase_driver extends CI_DB {
* Keep / reestablish the db connection if no queries have been
* sent for a length of time exceeding the server's idle timeout
*
- * access public
- * return void
+ * @access public
+ * @return void
*/
public function reconnect()
{
@@ -133,8 +133,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Select the database
*
- * access private called by the base class
- * return resource
+ * @access private called by the base class
+ * @return resource
*/
public function db_select()
{
@@ -147,14 +147,14 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Set client character set
*
- * access public
- * param string
- * param string
- * return resource
+ * @access public
+ * @param string
+ * @param string
+ * @return resource
*/
public function db_set_charset($charset, $collation)
{
- // todo - add support if needed
+ // @todo - add support if needed
return TRUE;
}
@@ -163,12 +163,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Version number query string
*
- * access public
- * return string
+ * @access public
+ * @return string
*/
public function _version()
{
- //todo - add support if needed
+ //@todo - add support if needed
return TRUE;
}
@@ -177,14 +177,14 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Execute the query
*
- * access private called by the base class
- * param string an SQL query
- * return resource
+ * @access private called by the base class
+ * @param string an SQL query
+ * @return resource
*/
public function _execute($sql)
{
$sql = $this->_prep_query($sql);
- return ibase_query($this->conn_id, $sql);
+ return @ibase_query($this->conn_id, $sql);
}
// --------------------------------------------------------------------
@@ -194,9 +194,9 @@ class CI_DB_interbase_driver extends CI_DB {
*
* If needed, each database adapter can prep the query string
*
- * access private called by execute()
- * param string an SQL query
- * return string
+ * @access private called by execute()
+ * @param string an SQL query
+ * @return string
*/
public function _prep_query($sql)
{
@@ -208,8 +208,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Begin Transaction
*
- * access public
- * return bool
+ * @access public
+ * @return bool
*/
public function trans_begin($test_mode = FALSE)
{
@@ -229,7 +229,7 @@ class CI_DB_interbase_driver extends CI_DB {
// even if the queries produce a successful result.
$this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;
- $this->trans = ibase_trans($this->conn_id);
+ $this->trans = @ibase_trans($this->conn_id);
return TRUE;
}
@@ -239,8 +239,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Commit Transaction
*
- * access public
- * return bool
+ * @access public
+ * @return bool
*/
public function trans_commit()
{
@@ -255,7 +255,7 @@ class CI_DB_interbase_driver extends CI_DB {
return TRUE;
}
- ibase_commit($this->trans);
+ @ibase_commit($this->trans);
return TRUE;
}
@@ -265,8 +265,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Rollback Transaction
*
- * access public
- * return bool
+ * @access public
+ * @return bool
*/
public function trans_rollback()
{
@@ -281,7 +281,7 @@ class CI_DB_interbase_driver extends CI_DB {
return TRUE;
}
- ibase_rollback($this->trans);
+ @ibase_rollback($this->trans);
return TRUE;
}
@@ -291,10 +291,10 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Escape String
*
- * access public
- * param string
- * param bool whether or not the string will be used in a LIKE condition
- * return string
+ * @access public
+ * @param string
+ * @param bool whether or not the string will be used in a LIKE condition
+ * @return string
*/
public function escape_str($str, $like = FALSE)
{
@@ -324,12 +324,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Affected Rows
*
- * access public
- * return integer
+ * @access public
+ * @return integer
*/
public function affected_rows()
{
- return ibase_affected_rows($this->conn_id);
+ return @ibase_affected_rows($this->conn_id);
}
// --------------------------------------------------------------------
@@ -337,12 +337,12 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Insert ID
*
- * access public
- * return integer
+ * @access public
+ * @return integer
*/
public function insert_id()
{
- //todo Implement manually
+ //@todo Implement manually
return 0;
}
@@ -354,9 +354,9 @@ class CI_DB_interbase_driver extends CI_DB {
* Generates a platform-specific query string that counts all records in
* the specified database
*
- * access public
- * param string
- * return string
+ * @access public
+ * @param string
+ * @return string
*/
public function count_all($table = '')
{
@@ -384,9 +384,9 @@ class CI_DB_interbase_driver extends CI_DB {
*
* Generates a platform-specific query string so that the table names can be fetched
*
- * access private
- * param boolean
- * return string
+ * @access private
+ * @param boolean
+ * @return string
*/
public function _list_tables($prefix_limit = FALSE)
{
@@ -410,9 +410,9 @@ SQL;
*
* Generates a platform-specific query string so that the column names can be fetched
*
- * access public
- * param string the table name
- * return string
+ * @access public
+ * @param string the table name
+ * @return string
*/
public function _list_columns($table = '')
{
@@ -427,9 +427,9 @@ SQL;
*
* Generates a platform-specific query so that the column data can be retrieved
*
- * access public
- * param string the table name
- * return object
+ * @access public
+ * @param string the table name
+ * @return object
*/
public function _field_data($table)
{
@@ -441,8 +441,8 @@ SQL;
/**
* The error message string
*
- * access private
- * return string
+ * @access private
+ * @return string
*/
public function _error_message()
{
@@ -454,8 +454,8 @@ SQL;
/**
* The error message number
*
- * access private
- * return integer
+ * @access private
+ * @return integer
*/
public function _error_number()
{
@@ -469,9 +469,9 @@ SQL;
*
* This public function escapes column and table names
*
- * access private
- * param string
- * return string
+ * @access private
+ * @param string
+ * @return string
*/
public function _escape_identifiers($item)
{
@@ -507,9 +507,9 @@ SQL;
* This public function implicitly groups FROM tables so there is no confusion
* about operator precedence in harmony with SQL standards
*
- * access public
- * param type
- * return type
+ * @access public
+ * @param type
+ * @return type
*/
public function _from_tables($tables)
{
@@ -528,11 +528,11 @@ SQL;
*
* Generates a platform-specific insert string from the supplied data
*
- * access public
- * param string the table name
- * param array the insert keys
- * param array the insert values
- * return string
+ * @access public
+ * @param string the table name
+ * @param array the insert keys
+ * @param array the insert values
+ * @return string
*/
public function _insert($table, $keys, $values)
{
@@ -546,13 +546,13 @@ SQL;
*
* Generates a platform-specific update string from the supplied data
*
- * access public
- * param string the table name
- * param array the update data
- * param array the where clause
- * param array the orderby clause
- * param array the limit clause
- * return string
+ * @access public
+ * @param string the table name
+ * @param array the update data
+ * @param array the where clause
+ * @param array the orderby clause
+ * @param array the limit clause
+ * @return string
*/
public function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
{
@@ -586,9 +586,9 @@ SQL;
* If the database does not support the truncate() command
* This public function maps to "DELETE FROM table"
*
- * access public
- * param string the table name
- * return string
+ * @access public
+ * @param string the table name
+ * @return string
*/
public function _truncate($table)
{
@@ -602,11 +602,11 @@ SQL;
*
* Generates a platform-specific delete string from the supplied data
*
- * access public
- * param string the table name
- * param array the where clause
- * param string the limit clause
- * return string
+ * @access public
+ * @param string the table name
+ * @param array the where clause
+ * @param string the limit clause
+ * @return string
*/
public function _delete($table, $where = array(), $like = array(), $limit = FALSE)
{
@@ -638,11 +638,11 @@ SQL;
*
* Generates a platform-specific LIMIT clause
*
- * access public
- * param string the sql query string
- * param integer the number of rows to limit the query to
- * param integer the offset value
- * return string
+ * @access public
+ * @param string the sql query string
+ * @param integer the number of rows to limit the query to
+ * @param integer the offset value
+ * @return string
*/
public function _limit($sql, $limit, $offset)
{
@@ -663,16 +663,14 @@ SQL;
/**
* Close DB Connection
*
- * access public
- * param resource
- * return void
+ * @access public
+ * @param resource
+ * @return void
*/
public function _close($conn_id)
{
- ibase_close($conn_id);
+ @ibase_close($conn_id);
}
-
-
}
--
cgit v1.2.3-24-g4f1b
From d19e47a3152c0a3e6a9aa13261b4c843c946523b Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Tue, 14 Feb 2012 23:40:40 -0500
Subject: Removed string case manipulation functions
---
system/database/drivers/interbase/interbase_driver.php | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 525294db4..6f889d91e 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -74,11 +74,11 @@ class CI_DB_interbase_driver extends CI_DB {
{
if ( ! $conn_id = @ibase_connect($this->database, $this->username, $this->password, $this->char_set))
{
- log_message('error', $error);
+ log_message('error', $this->_error_message());
if ($this->db_debug)
{
- $this->display_error($error, '', TRUE);
+ $this->display_error($this->_error_message(), '', TRUE);
}
return FALSE;
@@ -99,11 +99,11 @@ class CI_DB_interbase_driver extends CI_DB {
{
if ( ! $conn_id = @ibase_pconnect($this->database, $this->username, $this->password, $this->char_set))
{
- log_message('error', $error);
+ log_message('error', $this->_error_message());
if ($this->db_debug)
{
- $this->display_error($error, '', TRUE);
+ $this->display_error($this->_error_message(), '', TRUE);
}
return FALSE;
@@ -496,7 +496,7 @@ SQL;
}
// remove duplicates if the user already included the escape
- return strtoupper(preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str));
+ return preg_replace('/['.$this->_escape_char.']+/', $this->_escape_char, $str);
}
// --------------------------------------------------------------------
@@ -518,7 +518,7 @@ SQL;
$tables = array($tables);
}
- return strtolower(implode(', ', $tables));
+ return implode(', ', $tables);
}
// --------------------------------------------------------------------
@@ -536,7 +536,7 @@ SQL;
*/
public function _insert($table, $keys, $values)
{
- return "INSERT INTO ".strtolower($table)." (".strtoupper(implode(', ', $keys)).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO {$table} (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
}
// --------------------------------------------------------------------
@@ -556,8 +556,6 @@ SQL;
*/
public function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
{
- $table = strtolower($table);
-
foreach ($values as $key => $val)
{
$valstr[] = $key." = ".$val;
@@ -610,8 +608,6 @@ SQL;
*/
public function _delete($table, $where = array(), $like = array(), $limit = FALSE)
{
- $table = strtolower($table);
-
$conditions = '';
if (count($where) > 0 OR count($like) > 0)
--
cgit v1.2.3-24-g4f1b
From 498fa354888c1fc4083d1e464b651498d9338b64 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 15 Feb 2012 10:05:49 -0500
Subject: Minor codestyle fix
---
system/database/drivers/interbase/interbase_driver.php | 2 --
system/database/drivers/interbase/interbase_utility.php | 1 +
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 6f889d91e..a011f103d 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -27,8 +27,6 @@
// ------------------------------------------------------------------------
-
-
/**
* Firebird/Interbase Database Adapter Class
*
diff --git a/system/database/drivers/interbase/interbase_utility.php b/system/database/drivers/interbase/interbase_utility.php
index d90ecae71..764275567 100644
--- a/system/database/drivers/interbase/interbase_utility.php
+++ b/system/database/drivers/interbase/interbase_utility.php
@@ -100,6 +100,7 @@ class CI_DB_interbase_utility extends CI_DB_utility {
public function _backup($params = array())
{
// Currently unsupported
+ // @todo See if can be implemented
return $this->db->display_error('db_unsuported_feature');
}
}
--
cgit v1.2.3-24-g4f1b
From 3d985a19ac05a8f5141b51fed9b1b37946733792 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 15 Feb 2012 11:38:00 -0500
Subject: Syntax fixes
---
.../drivers/interbase/interbase_driver.php | 27 ++++++++++------------
.../database/drivers/interbase/interbase_forge.php | 13 ++---------
2 files changed, 14 insertions(+), 26 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index a011f103d..36ef42ef3 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -152,7 +152,7 @@ class CI_DB_interbase_driver extends CI_DB {
*/
public function db_set_charset($charset, $collation)
{
- // @todo - add support if needed
+ // Must be determined at connection
return TRUE;
}
@@ -166,8 +166,13 @@ class CI_DB_interbase_driver extends CI_DB {
*/
public function _version()
{
- //@todo - add support if needed
- return TRUE;
+ if (($service = ibase_service_attach($this->hostname, $this->username, $this->password)))
+ {
+ $version = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
+ return $version;
+ }
+
+ return FALSE;
}
// --------------------------------------------------------------------
@@ -396,7 +401,7 @@ SQL;
if ($prefix_limit !== FALSE AND $this->dbprefix != '')
{
- $sql .= " AND 'name' LIKE '".$this->escape_like_str($this->dbprefix)."%' ".sprintf($this->_like_escape_str, $this->_like_escape_chr);
+ $sql .= ' AND "RDB$RELATION_NAME" LIKE \''.$this->escape_like_str($this->dbprefix)."%' ".sprintf($this->_like_escape_str, $this->_like_escape_chr);
}
return $sql;
}
@@ -620,7 +625,7 @@ SQL;
$conditions .= implode("\n", $like);
}
- $limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
+ //$limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
return "DELETE FROM ".$table.$conditions.$limit;
}
@@ -640,16 +645,8 @@ SQL;
*/
public function _limit($sql, $limit, $offset)
{
- if ($offset == 0)
- {
- $offset = '';
- }
- else
- {
- $offset .= ", ";
- }
-
- return $sql."LIMIT ".$offset.$limit;
+ //There doesn't seem to be a limit clause?
+ return $sql;
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index 815107d85..177433fc4 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -205,20 +205,11 @@ class CI_DB_interbase_forge extends CI_DB_forge {
{
$sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
- // DROP has everything it needs now.
- /*if ($alter_type == 'DROP')
- {
- // SQLite does not support dropping columns
- // http://www.sqlite.org/omitted.html
- // http://www.sqlite.org/faq.html#q11
- return FALSE;
- }*/
-
- $sql .= " $column_definition";
+ $sql .= " {$column_definition}";
if ($default_value != '')
{
- $sql .= " DEFAULT \"$default_value\"";
+ $sql .= " DEFAULT \"{$default_value}\"";
}
if ($null === NULL)
--
cgit v1.2.3-24-g4f1b
From 8be31a92758959d7fd7b035e36b9799da13426ae Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 15 Feb 2012 11:48:57 -0500
Subject: Limit clause fixes
---
system/database/drivers/interbase/interbase_driver.php | 12 +++++++-----
system/database/drivers/interbase/interbase_result.php | 3 +--
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 36ef42ef3..197c01401 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -436,7 +436,10 @@ SQL;
*/
public function _field_data($table)
{
- return "SELECT * FROM ".$table." LIMIT 1";
+ // Need to find a more efficient way to do this
+ // but Interbase/Firebird seems to lack the
+ // limit clause
+ return "SELECT * FROM {$table}";
}
// --------------------------------------------------------------------
@@ -564,7 +567,7 @@ SQL;
$valstr[] = $key." = ".$val;
}
- $limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
+ //$limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
$orderby = (count($orderby) >= 1)?' ORDER BY '.implode(", ", $orderby):'';
@@ -572,7 +575,7 @@ SQL;
$sql .= ($where != '' AND count($where) >=1) ? " WHERE ".implode(" ", $where) : '';
- $sql .= $orderby.$limit;
+ $sql .= $orderby;
return $sql;
}
@@ -627,7 +630,7 @@ SQL;
//$limit = ( ! $limit) ? '' : ' LIMIT '.$limit;
- return "DELETE FROM ".$table.$conditions.$limit;
+ return "DELETE FROM {$table}{$conditions}";
}
// --------------------------------------------------------------------
@@ -664,6 +667,5 @@ SQL;
}
}
-
/* End of file interbase_driver.php */
/* Location: ./system/database/drivers/interbase/interbase_driver.php */
\ No newline at end of file
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 9d827895d..f2465ab5d 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -149,7 +149,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
public function _data_seek($n = 0)
{
- //Interbase driver doesn't implement a sutable function
+ //Interbase driver doesn't implement a suitable function
return array();
}
@@ -185,6 +185,5 @@ class CI_DB_interbase_result extends CI_DB_result {
}
-
/* End of file interbase_result.php */
/* Location: ./system/database/drivers/interbase/interbase_result.php */
\ No newline at end of file
--
cgit v1.2.3-24-g4f1b
From eb6dcf058bd0cc6e5f3b6a793491d4a1c144155b Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 15 Feb 2012 16:48:51 -0500
Subject: Implemented _list_columns() method
---
system/database/drivers/interbase/interbase_driver.php | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 197c01401..8a156af53 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -419,8 +419,17 @@ SQL;
*/
public function _list_columns($table = '')
{
- // Not supported
- return FALSE;
+ $sql = <<
Date: Wed, 15 Feb 2012 18:40:39 -0500
Subject: Implemented insert_id() method
---
system/database/drivers/interbase/interbase_driver.php | 7 ++++---
user_guide_src/source/database/helpers.rst | 6 +++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 8a156af53..97bf722db 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -341,12 +341,13 @@ class CI_DB_interbase_driver extends CI_DB {
* Insert ID
*
* @access public
+ * @param string $generator_name
+ * @param integer $inc_by
* @return integer
*/
- public function insert_id()
+ public function insert_id($generator_name, $inc_by=1)
{
- //@todo Implement manually
- return 0;
+ return ibase_gen_id($generator_name, $inc_by);
}
// --------------------------------------------------------------------
diff --git a/user_guide_src/source/database/helpers.rst b/user_guide_src/source/database/helpers.rst
index 7ea19e9f6..e8a5ac801 100644
--- a/user_guide_src/source/database/helpers.rst
+++ b/user_guide_src/source/database/helpers.rst
@@ -7,9 +7,9 @@ $this->db->insert_id()
The insert ID number when performing database inserts.
-.. note:: If using the PDO driver with PostgreSQL, this function requires
- a $name parameter, which specifies the appropriate sequence to check
- for the insert id.
+.. note:: If using the PDO driver with PostgreSQL, or using the Interbase
+ driver, this function requires a $name parameter, which specifies the
+ appropriate sequence to check for the insert id.
$this->db->affected_rows()
===========================
--
cgit v1.2.3-24-g4f1b
From 817af19bb12b88bae361034e00ce3a02da595f94 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Thu, 16 Feb 2012 08:28:00 -0500
Subject: narfbg suggested fixes
---
system/database/DB_driver.php | 2 +-
.../drivers/interbase/interbase_driver.php | 86 ++++++----------------
.../database/drivers/interbase/interbase_forge.php | 20 ++---
.../drivers/interbase/interbase_result.php | 30 +++-----
.../drivers/interbase/interbase_utility.php | 12 +--
5 files changed, 44 insertions(+), 106 deletions(-)
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index b829bbe46..7c73fc257 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -256,7 +256,7 @@ class CI_DB_driver {
// Some DBs have functions that return the version, and don't run special
// SQL queries per se. In these instances, just return the result.
- $driver_version_exceptions = array('oci8', 'sqlite', 'cubrid', 'pdo', 'mysqli');
+ $driver_version_exceptions = array('oci8', 'sqlite', 'cubrid', 'pdo', 'mysqli', 'interbase');
if (in_array($this->dbdriver, $driver_version_exceptions))
{
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 97bf722db..a6f192ad1 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -1,13 +1,13 @@
-hostname) && $this->hostname !== "localhost")
+ {
+ $this->database = $this->hostname.':'.$this->database;
+ }
+ }
/**
* Non-persistent database connection
*
- * @access private called by the base class
* @return resource
*/
public function db_connect()
{
- if ( ! $conn_id = @ibase_connect($this->database, $this->username, $this->password, $this->char_set))
- {
- log_message('error', $this->_error_message());
-
- if ($this->db_debug)
- {
- $this->display_error($this->_error_message(), '', TRUE);
- }
-
- return FALSE;
- }
-
- return $conn_id;
+ return @ibase_connect($this->database, $this->username, $this->password, $this->char_set);
}
// --------------------------------------------------------------------
@@ -90,24 +88,11 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Persistent database connection
*
- * @access private called by the base class
* @return resource
*/
public function db_pconnect()
{
- if ( ! $conn_id = @ibase_pconnect($this->database, $this->username, $this->password, $this->char_set))
- {
- log_message('error', $this->_error_message());
-
- if ($this->db_debug)
- {
- $this->display_error($this->_error_message(), '', TRUE);
- }
-
- return FALSE;
- }
-
- return $conn_id;
+ return @ibase_pconnect($this->database, $this->username, $this->password, $this->char_set);
}
// --------------------------------------------------------------------
@@ -118,7 +103,6 @@ class CI_DB_interbase_driver extends CI_DB {
* Keep / reestablish the db connection if no queries have been
* sent for a length of time exceeding the server's idle timeout
*
- * @access public
* @return void
*/
public function reconnect()
@@ -131,7 +115,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Select the database
*
- * @access private called by the base class
* @return resource
*/
public function db_select()
@@ -145,7 +128,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Set client character set
*
- * @access public
* @param string
* @param string
* @return resource
@@ -161,7 +143,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Version number query string
*
- * @access public
* @return string
*/
public function _version()
@@ -180,7 +161,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Execute the query
*
- * @access private called by the base class
* @param string an SQL query
* @return resource
*/
@@ -197,7 +177,6 @@ class CI_DB_interbase_driver extends CI_DB {
*
* If needed, each database adapter can prep the query string
*
- * @access private called by execute()
* @param string an SQL query
* @return string
*/
@@ -211,7 +190,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Begin Transaction
*
- * @access public
* @return bool
*/
public function trans_begin($test_mode = FALSE)
@@ -242,7 +220,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Commit Transaction
*
- * @access public
* @return bool
*/
public function trans_commit()
@@ -268,7 +245,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Rollback Transaction
*
- * @access public
* @return bool
*/
public function trans_rollback()
@@ -294,7 +270,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Escape String
*
- * @access public
* @param string
* @param bool whether or not the string will be used in a LIKE condition
* @return string
@@ -327,7 +302,6 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Affected Rows
*
- * @access public
* @return integer
*/
public function affected_rows()
@@ -340,12 +314,11 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Insert ID
*
- * @access public
* @param string $generator_name
* @param integer $inc_by
* @return integer
*/
- public function insert_id($generator_name, $inc_by=1)
+ public function insert_id($generator_name, $inc_by=0)
{
return ibase_gen_id($generator_name, $inc_by);
}
@@ -358,7 +331,6 @@ class CI_DB_interbase_driver extends CI_DB {
* Generates a platform-specific query string that counts all records in
* the specified database
*
- * @access public
* @param string
* @return string
*/
@@ -369,7 +341,7 @@ class CI_DB_interbase_driver extends CI_DB {
return 0;
}
- $query = $this->query($this->_count_string . $this->_protect_identifiers('numrows') . " FROM " . $this->_protect_identifiers($table, TRUE, NULL, FALSE));
+ $query = $this->query($this->_count_string . $this->_protect_identifiers('numrows') . ' FROM ' . $this->_protect_identifiers($table, TRUE, NULL, FALSE));
if ($query->num_rows() == 0)
{
@@ -388,7 +360,6 @@ class CI_DB_interbase_driver extends CI_DB {
*
* Generates a platform-specific query string so that the table names can be fetched
*
- * @access private
* @param boolean
* @return string
*/
@@ -414,7 +385,6 @@ SQL;
*
* Generates a platform-specific query string so that the column names can be fetched
*
- * @access public
* @param string the table name
* @return string
*/
@@ -440,7 +410,6 @@ SQL;
*
* Generates a platform-specific query so that the column data can be retrieved
*
- * @access public
* @param string the table name
* @return object
*/
@@ -457,7 +426,6 @@ SQL;
/**
* The error message string
*
- * @access private
* @return string
*/
public function _error_message()
@@ -470,7 +438,6 @@ SQL;
/**
* The error message number
*
- * @access private
* @return integer
*/
public function _error_number()
@@ -485,7 +452,6 @@ SQL;
*
* This public function escapes column and table names
*
- * @access private
* @param string
* @return string
*/
@@ -523,7 +489,6 @@ SQL;
* This public function implicitly groups FROM tables so there is no confusion
* about operator precedence in harmony with SQL standards
*
- * @access public
* @param type
* @return type
*/
@@ -534,6 +499,7 @@ SQL;
$tables = array($tables);
}
+ //Interbase/Firebird doesn't like grouped tables
return implode(', ', $tables);
}
@@ -544,7 +510,6 @@ SQL;
*
* Generates a platform-specific insert string from the supplied data
*
- * @access public
* @param string the table name
* @param array the insert keys
* @param array the insert values
@@ -552,7 +517,7 @@ SQL;
*/
public function _insert($table, $keys, $values)
{
- return "INSERT INTO {$table} (".implode(', ', $keys).") VALUES (".implode(', ', $values).")";
+ return "INSERT INTO {$table} (".implode(', ', $keys).') VALUES ('.implode(', ', $values).')';
}
// --------------------------------------------------------------------
@@ -562,7 +527,6 @@ SQL;
*
* Generates a platform-specific update string from the supplied data
*
- * @access public
* @param string the table name
* @param array the update data
* @param array the where clause
@@ -581,9 +545,9 @@ SQL;
$orderby = (count($orderby) >= 1)?' ORDER BY '.implode(", ", $orderby):'';
- $sql = "UPDATE ".$table." SET ".implode(', ', $valstr);
+ $sql = "UPDATE {$table} SET ".implode(', ', $valstr);
- $sql .= ($where != '' AND count($where) >=1) ? " WHERE ".implode(" ", $where) : '';
+ $sql .= ($where != '' AND count($where) >=1) ? ' WHERE '.implode(' ', $where) : '';
$sql .= $orderby;
@@ -600,7 +564,6 @@ SQL;
* If the database does not support the truncate() command
* This public function maps to "DELETE FROM table"
*
- * @access public
* @param string the table name
* @return string
*/
@@ -616,7 +579,6 @@ SQL;
*
* Generates a platform-specific delete string from the supplied data
*
- * @access public
* @param string the table name
* @param array the where clause
* @param string the limit clause
@@ -633,7 +595,7 @@ SQL;
if (count($where) > 0 && count($like) > 0)
{
- $conditions .= " AND ";
+ $conditions .= ' AND ';
}
$conditions .= implode("\n", $like);
}
@@ -650,7 +612,6 @@ SQL;
*
* Generates a platform-specific LIMIT clause
*
- * @access public
* @param string the sql query string
* @param integer the number of rows to limit the query to
* @param integer the offset value
@@ -667,7 +628,6 @@ SQL;
/**
* Close DB Connection
*
- * @access public
* @param resource
* @return void
*/
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index 177433fc4..6301481c5 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -1,13 +1,13 @@
-db->db_debug)
- {
- return $this->db->display_error('db_unsuported_feature');
- }
- return array();
+ return 'DROP TABLE '.$name;
}
// --------------------------------------------------------------------
@@ -191,7 +183,6 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* Generates a platform-specific query so that a table can be altered
* Called by add_column(), drop_column(), and column_alter(),
*
- * @access private
* @param string the ALTER type (ADD, DROP, CHANGE)
* @param string the column name
* @param string the table name
@@ -237,14 +228,13 @@ class CI_DB_interbase_forge extends CI_DB_forge {
*
* Generates a platform-specific query so that a table can be renamed
*
- * @access private
* @param string the old table name
* @param string the new table name
* @return string
*/
public function _rename_table($table_name, $new_table_name)
{
- $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name)." RENAME TO ".$this->db->_protect_identifiers($new_table_name);
+ $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name).' RENAME TO '.$this->db->_protect_identifiers($new_table_name);
return $sql;
}
}
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index f2465ab5d..7d56c56c6 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -1,13 +1,13 @@
-result_id))
+ if( ! is_null($this->num_rows))
{
- $count++;
+ return $this->num_rows;
}
- return $count;
+ return $this->num_rows = (isset($this->result_array()) ? count($this->result_array()) : 0;
}
// --------------------------------------------------------------------
@@ -62,7 +60,6 @@ class CI_DB_interbase_result extends CI_DB_result {
/**
* Number of fields in the result set
*
- * @access public
* @return integer
*/
public function num_fields()
@@ -77,13 +74,12 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* Generates an array of column names
*
- * @access public
* @return array
*/
public function list_fields()
{
$field_names = array();
- for ($i = 0; $i < $this->num_fields(); $i++)
+ for ($i = 0, $num_fields=$this->num_fields(); $i < $num_fields; $i++)
{
$info = ibase_field_info($this->result_id, $i);
$field_names[] = $info['name'];
@@ -99,14 +95,13 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* Generates an array of objects containing field meta-data
*
- * @access public
* @return array
*/
public function field_data()
{
$retval = array();
- for ($i = 0; $i < $this->num_fields(); $i++)
+ for ($i = 0, $num_fields=$this->num_fields(); $i < $num_fields; $i++)
{
$info = ibase_field_info($this->result_id, $i);
@@ -144,13 +139,12 @@ class CI_DB_interbase_result extends CI_DB_result {
* this internally before fetching results to make sure the
* result set starts at zero
*
- * @access private
* @return array
*/
public function _data_seek($n = 0)
{
//Interbase driver doesn't implement a suitable function
- return array();
+ return FALSE;
}
// --------------------------------------------------------------------
@@ -160,7 +154,6 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* Returns the result set as an array
*
- * @access private
* @return array
*/
public function _fetch_assoc()
@@ -175,7 +168,6 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* Returns the result set as an object
*
- * @access private
* @return object
*/
public function _fetch_object()
diff --git a/system/database/drivers/interbase/interbase_utility.php b/system/database/drivers/interbase/interbase_utility.php
index 764275567..e31021acb 100644
--- a/system/database/drivers/interbase/interbase_utility.php
+++ b/system/database/drivers/interbase/interbase_utility.php
@@ -1,13 +1,13 @@
-db->display_error('db_unsuported_feature');
}
- return array();
+ return FALSE;
}
// --------------------------------------------------------------------
@@ -63,7 +62,6 @@ class CI_DB_interbase_utility extends CI_DB_utility {
*
* Is optimization even supported in Interbase/Firebird?
*
- * @access private
* @param string the table name
* @return object
*/
@@ -79,7 +77,6 @@ class CI_DB_interbase_utility extends CI_DB_utility {
*
* Table repairs are not supported in Interbase/Firebird
*
- * @access private
* @param string the table name
* @return object
*/
@@ -93,7 +90,6 @@ class CI_DB_interbase_utility extends CI_DB_utility {
/**
* Interbase/Firebird Export
*
- * @access private
* @param array Preferences
* @return mixed
*/
--
cgit v1.2.3-24-g4f1b
From e27216f88443775534e185e192996353d4958387 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Thu, 16 Feb 2012 12:15:45 -0500
Subject: Num rows fix
---
system/database/drivers/interbase/interbase_result.php | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 7d56c56c6..3d5721138 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -52,7 +52,7 @@ class CI_DB_interbase_result extends CI_DB_result {
return $this->num_rows;
}
- return $this->num_rows = (isset($this->result_array()) ? count($this->result_array()) : 0;
+ return 0;
}
// --------------------------------------------------------------------
@@ -143,6 +143,9 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
public function _data_seek($n = 0)
{
+ //Set the row count to 0
+ $this->num_rows = 0;
+
//Interbase driver doesn't implement a suitable function
return FALSE;
}
@@ -158,6 +161,9 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
public function _fetch_assoc()
{
+ //Increment row count
+ $this->num_rows++;
+
return @ibase_fetch_assoc($this->result_id);
}
@@ -172,6 +178,9 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
public function _fetch_object()
{
+ //Increment row count
+ $this->num_rows++;
+
return @ibase_fetch_object($this->result_id);
}
--
cgit v1.2.3-24-g4f1b
From 3c4281f09dce0a97ab700d79e26308fdab350b73 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Thu, 16 Feb 2012 19:00:10 -0500
Subject: Simplified hostname connection logic
---
system/database/drivers/interbase/interbase_driver.php | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index a6f192ad1..20663d8bb 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -61,17 +61,6 @@ class CI_DB_interbase_driver extends CI_DB {
// Keeps track of the resource for the current transaction
protected $trans;
-
- /**
- * Constructor for some overall setup
- */
- public function __construct()
- {
- if( ! empty($this->hostname) && $this->hostname !== "localhost")
- {
- $this->database = $this->hostname.':'.$this->database;
- }
- }
/**
* Non-persistent database connection
@@ -80,7 +69,7 @@ class CI_DB_interbase_driver extends CI_DB {
*/
public function db_connect()
{
- return @ibase_connect($this->database, $this->username, $this->password, $this->char_set);
+ return @ibase_connect($this->hostname.':'.$this->database, $this->username, $this->password, $this->char_set);
}
// --------------------------------------------------------------------
@@ -92,7 +81,7 @@ class CI_DB_interbase_driver extends CI_DB {
*/
public function db_pconnect()
{
- return @ibase_pconnect($this->database, $this->username, $this->password, $this->char_set);
+ return @ibase_pconnect($this->hostname.':'.$this->database, $this->username, $this->password, $this->char_set);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 3a4cdc62042c56da9527e6d1d4c1ab5417839e1c Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 17 Feb 2012 13:59:44 -0500
Subject: Workaround to fix method
---
.../drivers/interbase/interbase_driver.php | 53 ++++++++++++++++++
.../drivers/interbase/interbase_result.php | 62 ++++++++++++++++++++++
2 files changed, 115 insertions(+)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 20663d8bb..7bd4f6f4b 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -624,6 +624,59 @@ SQL;
{
@ibase_close($conn_id);
}
+
+ // --------------------------------------------------------------------------
+
+ /**
+ * Returns an array of table names
+ *
+ * @access public
+ * @return array
+ */
+ function list_tables($constrain_by_prefix = FALSE)
+ {
+ // Is there a cached result?
+ if (isset($this->data_cache['table_names']))
+ {
+ return $this->data_cache['table_names'];
+ }
+
+ if (FALSE === ($sql = $this->_list_tables($constrain_by_prefix)))
+ {
+ if ($this->db_debug)
+ {
+ return $this->display_error('db_unsupported_function');
+ }
+ return FALSE;
+ }
+
+ $retval = array();
+ $query = $this->query($sql);
+
+ $table = FALSE;
+ $rows = $query->result_array();
+
+ // This has to be called after getting the result due to the
+ // limitations of the database driver
+ if ($query->num_rows() > 0)
+ {
+ $key = (($row = current($rows)) && in_array('table_name', array_map('strtolower', array_keys($row))));
+
+ if ($key)
+ {
+ $table = array_key_exists('TABLE_NAME', $row) ? 'TABLE_NAME' : 'table_name';
+ }
+
+ foreach ($rows as $row)
+ {
+ $retval[] = ( ! $table) ? current($row) : $row[$table];
+ }
+ }
+
+ $this->data_cache['table_names'] = $retval;
+
+ return $this->data_cache['table_names'];
+ }
}
/* End of file interbase_driver.php */
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 3d5721138..37f0a108c 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -183,6 +183,68 @@ class CI_DB_interbase_result extends CI_DB_result {
return @ibase_fetch_object($this->result_id);
}
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Query result. "object" version.
+ *
+ * @return object
+ */
+ public function result_object()
+ {
+ if (count($this->result_object) > 0)
+ {
+ return $this->result_object;
+ }
+
+ // In the event that query caching is on the result_id variable
+ // will return FALSE since there isn't a valid SQL resource so
+ // we'll simply return an empty array.
+ if ($this->result_id === FALSE)
+ {
+ return array();
+ }
+
+ $this->num_rows = 0;
+ while ($row = $this->_fetch_object())
+ {
+ $this->result_object[] = $row;
+ }
+
+ return $this->result_object;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Query result. "array" version.
+ *
+ * @return array
+ */
+ public function result_array()
+ {
+ if (count($this->result_array) > 0)
+ {
+ return $this->result_array;
+ }
+
+ // In the event that query caching is on the result_id variable
+ // will return FALSE since there isn't a valid SQL resource so
+ // we'll simply return an empty array.
+ if ($this->result_id === FALSE)
+ {
+ return array();
+ }
+
+ $this->num_rows = 0;
+ while ($row = $this->_fetch_assoc())
+ {
+ $this->result_array[] = $row;
+ }
+
+ return $this->result_array;
+ }
}
--
cgit v1.2.3-24-g4f1b
From 7d42eb39484a784496868f4446a2d47b0c52410d Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 17 Feb 2012 14:21:18 -0500
Subject: More general fix for num_rows
---
.../drivers/interbase/interbase_driver.php | 53 ----------------------
.../drivers/interbase/interbase_result.php | 5 +-
2 files changed, 4 insertions(+), 54 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 7bd4f6f4b..20663d8bb 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -624,59 +624,6 @@ SQL;
{
@ibase_close($conn_id);
}
-
- // --------------------------------------------------------------------------
-
- /**
- * Returns an array of table names
- *
- * @access public
- * @return array
- */
- function list_tables($constrain_by_prefix = FALSE)
- {
- // Is there a cached result?
- if (isset($this->data_cache['table_names']))
- {
- return $this->data_cache['table_names'];
- }
-
- if (FALSE === ($sql = $this->_list_tables($constrain_by_prefix)))
- {
- if ($this->db_debug)
- {
- return $this->display_error('db_unsupported_function');
- }
- return FALSE;
- }
-
- $retval = array();
- $query = $this->query($sql);
-
- $table = FALSE;
- $rows = $query->result_array();
-
- // This has to be called after getting the result due to the
- // limitations of the database driver
- if ($query->num_rows() > 0)
- {
- $key = (($row = current($rows)) && in_array('table_name', array_map('strtolower', array_keys($row))));
-
- if ($key)
- {
- $table = array_key_exists('TABLE_NAME', $row) ? 'TABLE_NAME' : 'table_name';
- }
-
- foreach ($rows as $row)
- {
- $retval[] = ( ! $table) ? current($row) : $row[$table];
- }
- }
-
- $this->data_cache['table_names'] = $retval;
-
- return $this->data_cache['table_names'];
- }
}
/* End of file interbase_driver.php */
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 37f0a108c..9093029dd 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -52,7 +52,10 @@ class CI_DB_interbase_result extends CI_DB_result {
return $this->num_rows;
}
- return 0;
+ //Get the results so that you can get an accurate rowcount
+ $this->result_array();
+
+ return $this->num_rows;
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From c2b712eb5230fc247ef81b4b88de789b9dd08cb4 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 17 Feb 2012 15:58:08 -0500
Subject: implemented create_database, misc cleanup
---
.../database/drivers/interbase/interbase_driver.php | 17 ++++++-----------
.../database/drivers/interbase/interbase_forge.php | 20 ++++++++++----------
2 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 20663d8bb..bc7365e4d 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -104,7 +104,7 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Select the database
*
- * @return resource
+ * @return bool
*/
public function db_select()
{
@@ -119,7 +119,7 @@ class CI_DB_interbase_driver extends CI_DB {
*
* @param string
* @param string
- * @return resource
+ * @return bool
*/
public function db_set_charset($charset, $collation)
{
@@ -332,6 +332,8 @@ class CI_DB_interbase_driver extends CI_DB {
$query = $this->query($this->_count_string . $this->_protect_identifiers('numrows') . ' FROM ' . $this->_protect_identifiers($table, TRUE, NULL, FALSE));
+ $query->result_array();
+
if ($query->num_rows() == 0)
{
return 0;
@@ -379,17 +381,10 @@ SQL;
*/
public function _list_columns($table = '')
{
- $sql = <<hostname.':'.$filename.'"';
+
}
// --------------------------------------------------------------------
@@ -72,7 +73,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param mixed primary key(s)
* @param mixed key(s)
* @param boolean should 'IF NOT EXISTS' be added to the SQL
- * @return bool
+ * @return string
*/
public function _create_table($table, $fields, $primary_keys, $keys, $if_not_exists)
{
@@ -168,7 +169,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
/**
* Drop Table
*
- * @return bool
+ * @return string
*/
public function _drop_table($table)
{
@@ -190,7 +191,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the default value
* @param boolean should 'NOT NULL' be added
* @param string the field after which we should add the new field
- * @return object
+ * @return string
*/
public function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
{
@@ -234,8 +235,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
*/
public function _rename_table($table_name, $new_table_name)
{
- $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table_name).' RENAME TO '.$this->db->_protect_identifiers($new_table_name);
- return $sql;
+ return 'ALTER TABLE '.$this->db->_protect_identifiers($table_name).' RENAME TO '.$this->db->_protect_identifiers($new_table_name);
}
}
--
cgit v1.2.3-24-g4f1b
From 2d04624cb59d5852f8e61d610ab822252cad685a Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 17 Feb 2012 16:31:51 -0500
Subject: Added unprefixed css property to welcome view
---
application/views/welcome_message.php | 2 ++
1 file changed, 2 insertions(+)
diff --git a/application/views/welcome_message.php b/application/views/welcome_message.php
index acc36b6d4..4d9161aa0 100644
--- a/application/views/welcome_message.php
+++ b/application/views/welcome_message.php
@@ -89,6 +89,8 @@
margin: 10px;
border: 1px solid #D0D0D0;
-webkit-box-shadow: 0 0 8px #D0D0D0;
+ -moz-box-shadow: 0 0 8px #D0D0D0;
+ box-shadow: 0 0 8px #D0D0D0;
}
--
cgit v1.2.3-24-g4f1b
From 0dcfd778350ce397b034f44e34397ea255b35809 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 17 Feb 2012 17:42:34 -0500
Subject: Automatic retreival of blob fields
---
system/database/drivers/interbase/interbase_result.php | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 9093029dd..c5608d977 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -167,7 +167,7 @@ class CI_DB_interbase_result extends CI_DB_result {
//Increment row count
$this->num_rows++;
- return @ibase_fetch_assoc($this->result_id);
+ return @ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS);
}
// --------------------------------------------------------------------
@@ -184,7 +184,7 @@ class CI_DB_interbase_result extends CI_DB_result {
//Increment row count
$this->num_rows++;
- return @ibase_fetch_object($this->result_id);
+ return @ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 53e24f08f930d53dc0e23d180e14d452f97addf9 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 11:55:31 -0500
Subject: Properly escape generator name
---
system/database/drivers/interbase/interbase_driver.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index bc7365e4d..fcefa6d97 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -309,7 +309,7 @@ class CI_DB_interbase_driver extends CI_DB {
*/
public function insert_id($generator_name, $inc_by=0)
{
- return ibase_gen_id($generator_name, $inc_by);
+ return ibase_gen_id('"'.$generator_name.'"', $inc_by);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From fa84d6186b7f61353d04132871a5223f80fa12ee Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 12:51:45 -0500
Subject: Fixed result array fetching
---
system/database/drivers/interbase/interbase_result.php | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index c5608d977..c7b40d2ea 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -53,7 +53,7 @@ class CI_DB_interbase_result extends CI_DB_result {
}
//Get the results so that you can get an accurate rowcount
- $this->result_array();
+ $this->result();
return $this->num_rows;
}
@@ -231,6 +231,14 @@ class CI_DB_interbase_result extends CI_DB_result {
{
return $this->result_array;
}
+
+ // Since the object and array are really similar, just case
+ // the result object to an array if need be
+ if(count($this->result_object) > 0)
+ {
+ $this->result_array = (array)$this->result_object;
+ return $this->result_array;
+ }
// In the event that query caching is on the result_id variable
// will return FALSE since there isn't a valid SQL resource so
--
cgit v1.2.3-24-g4f1b
From 53d109dbd831506c4b9ca77f10bc1b2dba9c28d5 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 13:04:48 -0500
Subject: Fix previous commit
---
system/database/drivers/interbase/interbase_result.php | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index c7b40d2ea..de4a10b62 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -236,7 +236,11 @@ class CI_DB_interbase_result extends CI_DB_result {
// the result object to an array if need be
if(count($this->result_object) > 0)
{
- $this->result_array = (array)$this->result_object;
+ foreach($this->result_object as $obj)
+ {
+ $this->result_array[] = (array)$obj;
+ }
+
return $this->result_array;
}
--
cgit v1.2.3-24-g4f1b
From 07b660b56dcf608b64fc1811c602c4072c276e70 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 13:23:06 -0500
Subject: Fixed insert_id possibly returning 0
---
system/database/drivers/interbase/interbase_driver.php | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index fcefa6d97..4044c4529 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -309,7 +309,12 @@ class CI_DB_interbase_driver extends CI_DB {
*/
public function insert_id($generator_name, $inc_by=0)
{
- return ibase_gen_id('"'.$generator_name.'"', $inc_by);
+ //If a generator hasn't been used before it will return 0
+ if($id = ibase_gen_id('"'.$generator_name.'"', $inc_by) !== 0)
+ {
+ return $id;
+ }
+ return ibase_gen_id('"'.$generator_name.'"', 1);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 934e853d9a3a491911b72f40cb371edfaddb9c94 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 15:42:14 -0500
Subject: Revert "Fix previous commit"
This reverts commit 53d109dbd831506c4b9ca77f10bc1b2dba9c28d5.
---
system/database/drivers/interbase/interbase_result.php | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index de4a10b62..c7b40d2ea 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -236,11 +236,7 @@ class CI_DB_interbase_result extends CI_DB_result {
// the result object to an array if need be
if(count($this->result_object) > 0)
{
- foreach($this->result_object as $obj)
- {
- $this->result_array[] = (array)$obj;
- }
-
+ $this->result_array = (array)$this->result_object;
return $this->result_array;
}
--
cgit v1.2.3-24-g4f1b
From fed2d1ddecae1886486915718cb9878b7d5aea45 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 15:42:45 -0500
Subject: Revert previous commit
---
system/database/drivers/interbase/interbase_driver.php | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 4044c4529..aeea00d7f 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -310,11 +310,7 @@ class CI_DB_interbase_driver extends CI_DB {
public function insert_id($generator_name, $inc_by=0)
{
//If a generator hasn't been used before it will return 0
- if($id = ibase_gen_id('"'.$generator_name.'"', $inc_by) !== 0)
- {
- return $id;
- }
- return ibase_gen_id('"'.$generator_name.'"', 1);
+ return ibase_gen_id('"'.$generator_name.'"', $inc_by);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 51ed4ed7f6097a34ce1db7b225272bfc1b0f0bcf Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 16:01:42 -0500
Subject: Convert result_array to result_object instead of re-fetching
---
.../drivers/interbase/interbase_result.php | 27 +++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index c7b40d2ea..e1332ba93 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -200,6 +200,27 @@ class CI_DB_interbase_result extends CI_DB_result {
{
return $this->result_object;
}
+
+ // Convert result array to object so that
+ // We don't have to get the result again
+ if(count($this->result_array) > 0)
+ {
+ $i = 0;
+
+ foreach($this->result_array as $array)
+ {
+ $this->result_object[$i] = new StdClass();
+
+ foreach($array as $key => $val)
+ {
+ $this->result_object[$i]->{$key} = $val;
+ }
+
+ ++$i;
+ }
+
+ return $this->result_object;
+ }
// In the event that query caching is on the result_id variable
// will return FALSE since there isn't a valid SQL resource so
@@ -236,7 +257,11 @@ class CI_DB_interbase_result extends CI_DB_result {
// the result object to an array if need be
if(count($this->result_object) > 0)
{
- $this->result_array = (array)$this->result_object;
+ foreach($this->result_object as $obj)
+ {
+ $this->result_array[] = (array)$obj;
+ }
+
return $this->result_array;
}
--
cgit v1.2.3-24-g4f1b
From 95562144da88784588fb2477fa0070576bd386a0 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 17:37:21 -0500
Subject: Set protected visibility on applicable functions/properties
---
.../drivers/interbase/interbase_driver.php | 44 +++++++++++-----------
.../database/drivers/interbase/interbase_forge.php | 12 +++---
.../drivers/interbase/interbase_result.php | 6 +--
3 files changed, 30 insertions(+), 32 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index aeea00d7f..ba4f9d8d9 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -45,19 +45,19 @@ class CI_DB_interbase_driver extends CI_DB {
public $dbdriver = 'interbase';
// The character used to escape with
- public $_escape_char = '"';
+ protected $_escape_char = '"';
// clause and character used for LIKE escape sequences
- public $_like_escape_str = " ESCAPE '%s' ";
- public $_like_escape_chr = '!';
+ protected $_like_escape_str = " ESCAPE '%s' ";
+ protected $_like_escape_chr = '!';
/**
* The syntax to count rows is slightly different across different
* database engines, so this string appears in each driver and is
* used for the count_all() and count_all_results() functions.
*/
- public $_count_string = "SELECT COUNT(*) AS ";
- public $_random_keyword = ' Random()'; // database specific random keyword
+ protected $_count_string = "SELECT COUNT(*) AS ";
+ protected $_random_keyword = ' Random()'; // database specific random keyword
// Keeps track of the resource for the current transaction
protected $trans;
@@ -134,7 +134,7 @@ class CI_DB_interbase_driver extends CI_DB {
*
* @return string
*/
- public function _version()
+ protected function _version()
{
if (($service = ibase_service_attach($this->hostname, $this->username, $this->password)))
{
@@ -153,7 +153,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param string an SQL query
* @return resource
*/
- public function _execute($sql)
+ protected function _execute($sql)
{
$sql = $this->_prep_query($sql);
return @ibase_query($this->conn_id, $sql);
@@ -169,7 +169,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param string an SQL query
* @return string
*/
- public function _prep_query($sql)
+ protected function _prep_query($sql)
{
return $sql;
}
@@ -333,8 +333,6 @@ class CI_DB_interbase_driver extends CI_DB {
$query = $this->query($this->_count_string . $this->_protect_identifiers('numrows') . ' FROM ' . $this->_protect_identifiers($table, TRUE, NULL, FALSE));
- $query->result_array();
-
if ($query->num_rows() == 0)
{
return 0;
@@ -355,7 +353,7 @@ class CI_DB_interbase_driver extends CI_DB {
* @param boolean
* @return string
*/
- public function _list_tables($prefix_limit = FALSE)
+ protected function _list_tables($prefix_limit = FALSE)
{
$sql = <<_reserved_identifiers as $id)
{
@@ -477,7 +475,7 @@ SQL;
* @param type
* @return type
*/
- public function _from_tables($tables)
+ protected function _from_tables($tables)
{
if ( ! is_array($tables))
{
@@ -500,7 +498,7 @@ SQL;
* @param array the insert values
* @return string
*/
- public function _insert($table, $keys, $values)
+ protected function _insert($table, $keys, $values)
{
return "INSERT INTO {$table} (".implode(', ', $keys).') VALUES ('.implode(', ', $values).')';
}
@@ -519,7 +517,7 @@ SQL;
* @param array the limit clause
* @return string
*/
- public function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
+ protected function _update($table, $values, $where, $orderby = array(), $limit = FALSE)
{
foreach ($values as $key => $val)
{
@@ -552,7 +550,7 @@ SQL;
* @param string the table name
* @return string
*/
- public function _truncate($table)
+ protected function _truncate($table)
{
return $this->_delete($table);
}
@@ -569,7 +567,7 @@ SQL;
* @param string the limit clause
* @return string
*/
- public function _delete($table, $where = array(), $like = array(), $limit = FALSE)
+ protected function _delete($table, $where = array(), $like = array(), $limit = FALSE)
{
$conditions = '';
@@ -602,7 +600,7 @@ SQL;
* @param integer the offset value
* @return string
*/
- public function _limit($sql, $limit, $offset)
+ protected function _limit($sql, $limit, $offset)
{
//There doesn't seem to be a limit clause?
return $sql;
@@ -616,7 +614,7 @@ SQL;
* @param resource
* @return void
*/
- public function _close($conn_id)
+ protected function _close($conn_id)
{
@ibase_close($conn_id);
}
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index d9b55a87f..c7372a0bf 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -42,7 +42,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the database name
* @return string
*/
- public function _create_database($filename='')
+ protected function _create_database($filename='')
{
// Firebird databases are flat files, so a path is required
// Hostname is needed for remote access
@@ -59,7 +59,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* - the current db is dropped
* @return bool
*/
- public function _drop_database($name='')
+ protected function _drop_database($name='')
{
return ibase_drop_db($this->conn_id);
}
@@ -75,7 +75,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param boolean should 'IF NOT EXISTS' be added to the SQL
* @return string
*/
- public function _create_table($table, $fields, $primary_keys, $keys, $if_not_exists)
+ protected function _create_table($table, $fields, $primary_keys, $keys, $if_not_exists)
{
$sql = 'CREATE TABLE ';
@@ -171,7 +171,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
*
* @return string
*/
- public function _drop_table($table)
+ protected function _drop_table($table)
{
return 'DROP TABLE '.$name;
}
@@ -193,7 +193,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the field after which we should add the new field
* @return string
*/
- public function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
+ protected function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
{
$sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
@@ -233,7 +233,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
* @param string the new table name
* @return string
*/
- public function _rename_table($table_name, $new_table_name)
+ protected function _rename_table($table_name, $new_table_name)
{
return 'ALTER TABLE '.$this->db->_protect_identifiers($table_name).' RENAME TO '.$this->db->_protect_identifiers($new_table_name);
}
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index e1332ba93..7a3a41f2c 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -144,7 +144,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* @return array
*/
- public function _data_seek($n = 0)
+ protected function _data_seek($n = 0)
{
//Set the row count to 0
$this->num_rows = 0;
@@ -162,7 +162,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* @return array
*/
- public function _fetch_assoc()
+ protected function _fetch_assoc()
{
//Increment row count
$this->num_rows++;
@@ -179,7 +179,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*
* @return object
*/
- public function _fetch_object()
+ protected function _fetch_object()
{
//Increment row count
$this->num_rows++;
--
cgit v1.2.3-24-g4f1b
From 2da66edce7c249c0305153a65c4292311f49a546 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 17:54:39 -0500
Subject: Fix counting issue, minor formatting
---
.../database/drivers/interbase/interbase_forge.php | 2 +-
.../drivers/interbase/interbase_result.php | 22 ++++++++++++++--------
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index c7372a0bf..d21a5551b 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -79,7 +79,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
{
$sql = 'CREATE TABLE ';
- $sql .= $this->db->_escape_identifiers($table)."(";
+ $sql .= $this->db->_protect_identifiers($table)."(";
$current_field_count = 0;
foreach ($fields as $field=>$attributes)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 7a3a41f2c..9caf1ce91 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -82,7 +82,7 @@ class CI_DB_interbase_result extends CI_DB_result {
public function list_fields()
{
$field_names = array();
- for ($i = 0, $num_fields=$this->num_fields(); $i < $num_fields; $i++)
+ for ($i = 0, $num_fields = $this->num_fields(); $i < $num_fields; $i++)
{
$info = ibase_field_info($this->result_id, $i);
$field_names[] = $info['name'];
@@ -104,7 +104,7 @@ class CI_DB_interbase_result extends CI_DB_result {
{
$retval = array();
- for ($i = 0, $num_fields=$this->num_fields(); $i < $num_fields; $i++)
+ for ($i = 0, $num_fields = $this->num_fields(); $i < $num_fields; $i++)
{
$info = ibase_field_info($this->result_id, $i);
@@ -164,10 +164,13 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
protected function _fetch_assoc()
{
- //Increment row count
- $this->num_rows++;
+ if(($row = @ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS)) !== FALSE)
+ {
+ //Increment row count
+ $this->num_rows++;
+ }
- return @ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS);
+ return $row;
}
// --------------------------------------------------------------------
@@ -181,10 +184,13 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
protected function _fetch_object()
{
- //Increment row count
- $this->num_rows++;
+ if(($row = @ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS)) !== FALSE)
+ {
+ //Increment row count
+ $this->num_rows++;
+ }
- return @ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS);
+ return $row;
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 41a439bf75bdd277e153d44788b732cf2e8c7ee3 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 18:40:00 -0500
Subject: Minor formatting fixes
---
system/database/drivers/interbase/interbase_result.php | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 9caf1ce91..01f0e52b2 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -164,7 +164,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
protected function _fetch_assoc()
{
- if(($row = @ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS)) !== FALSE)
+ if (($row = @ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS)) !== FALSE)
{
//Increment row count
$this->num_rows++;
@@ -184,7 +184,7 @@ class CI_DB_interbase_result extends CI_DB_result {
*/
protected function _fetch_object()
{
- if(($row = @ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS)) !== FALSE)
+ if (($row = @ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS)) !== FALSE)
{
//Increment row count
$this->num_rows++;
@@ -209,7 +209,7 @@ class CI_DB_interbase_result extends CI_DB_result {
// Convert result array to object so that
// We don't have to get the result again
- if(count($this->result_array) > 0)
+ if (count($this->result_array) > 0)
{
$i = 0;
@@ -261,7 +261,7 @@ class CI_DB_interbase_result extends CI_DB_result {
// Since the object and array are really similar, just case
// the result object to an array if need be
- if(count($this->result_object) > 0)
+ if (count($this->result_object) > 0)
{
foreach($this->result_object as $obj)
{
--
cgit v1.2.3-24-g4f1b
From dd044b317fc2db52f3812792a256497a2f0e94fb Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 18:58:24 -0500
Subject: More style fixes, replaced _protect_identifiers with
protect_identifiers in db_forge
---
system/database/drivers/interbase/interbase_forge.php | 16 ++++++++--------
system/database/drivers/interbase/interbase_result.php | 6 +++---
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index d21a5551b..b8ea6a05d 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -79,7 +79,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
{
$sql = 'CREATE TABLE ';
- $sql .= $this->db->_protect_identifiers($table)."(";
+ $sql .= $this->db->protect_identifiers($table)."(";
$current_field_count = 0;
foreach ($fields as $field=>$attributes)
@@ -95,7 +95,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
{
$attributes = array_change_key_case($attributes, CASE_UPPER);
- $sql .= "\n\t".$this->db->_protect_identifiers($field);
+ $sql .= "\n\t".$this->db->protect_identifiers($field);
$sql .= ' '.$attributes['TYPE'];
@@ -138,7 +138,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
if (count($primary_keys) > 0)
{
- $primary_keys = $this->db->_protect_identifiers($primary_keys);
+ $primary_keys = $this->db->protect_identifiers($primary_keys);
$sql .= ",\n\tPRIMARY KEY (" . implode(', ', $primary_keys) . ")";
}
@@ -148,11 +148,11 @@ class CI_DB_interbase_forge extends CI_DB_forge {
{
if (is_array($key))
{
- $key = $this->db->_protect_identifiers($key);
+ $key = $this->db->protect_identifiers($key);
}
else
{
- $key = array($this->db->_protect_identifiers($key));
+ $key = array($this->db->protect_identifiers($key));
}
$sql .= ",\n\tUNIQUE (" . implode(', ', $key) . ")";
@@ -195,7 +195,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
*/
protected function _alter_table($alter_type, $table, $column_name, $column_definition = '', $default_value = '', $null = '', $after_field = '')
{
- $sql = 'ALTER TABLE '.$this->db->_protect_identifiers($table)." $alter_type ".$this->db->_protect_identifiers($column_name);
+ $sql = 'ALTER TABLE '.$this->db->protect_identifiers($table)." $alter_type ".$this->db->protect_identifiers($column_name);
$sql .= " {$column_definition}";
@@ -215,7 +215,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
if ($after_field != '')
{
- $sql .= ' AFTER ' . $this->db->_protect_identifiers($after_field);
+ $sql .= ' AFTER ' . $this->db->protect_identifiers($after_field);
}
return $sql;
@@ -235,7 +235,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
*/
protected function _rename_table($table_name, $new_table_name)
{
- return 'ALTER TABLE '.$this->db->_protect_identifiers($table_name).' RENAME TO '.$this->db->_protect_identifiers($new_table_name);
+ return 'ALTER TABLE '.$this->db->protect_identifiers($table_name).' RENAME TO '.$this->db->protect_identifiers($new_table_name);
}
}
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index 01f0e52b2..be9cb6547 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -213,11 +213,11 @@ class CI_DB_interbase_result extends CI_DB_result {
{
$i = 0;
- foreach($this->result_array as $array)
+ foreach ($this->result_array as $array)
{
$this->result_object[$i] = new StdClass();
- foreach($array as $key => $val)
+ foreach ($array as $key => $val)
{
$this->result_object[$i]->{$key} = $val;
}
@@ -263,7 +263,7 @@ class CI_DB_interbase_result extends CI_DB_result {
// the result object to an array if need be
if (count($this->result_object) > 0)
{
- foreach($this->result_object as $obj)
+ foreach ($this->result_object as $obj)
{
$this->result_array[] = (array)$obj;
}
--
cgit v1.2.3-24-g4f1b
From 2062a8693e1ba44c4530254f63c3936894aad526 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Mon, 20 Feb 2012 19:38:10 -0500
Subject: Made tranaaction functions return their actual value
---
system/database/drivers/interbase/interbase_driver.php | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index ba4f9d8d9..7258e605e 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -224,9 +224,7 @@ class CI_DB_interbase_driver extends CI_DB {
return TRUE;
}
- @ibase_commit($this->trans);
-
- return TRUE;
+ return @ibase_commit($this->trans);
}
// --------------------------------------------------------------------
@@ -249,9 +247,7 @@ class CI_DB_interbase_driver extends CI_DB {
return TRUE;
}
- @ibase_rollback($this->trans);
-
- return TRUE;
+ return @ibase_rollback($this->trans);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 125fe732c09f82a0702f29c9309f726bdd5a33c3 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Tue, 21 Feb 2012 07:58:25 -0500
Subject: More formatting fixes
---
system/database/drivers/interbase/interbase_driver.php | 4 ++--
system/database/drivers/interbase/interbase_forge.php | 2 +-
system/database/drivers/interbase/interbase_result.php | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 7258e605e..33038ad80 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -299,8 +299,8 @@ class CI_DB_interbase_driver extends CI_DB {
/**
* Insert ID
*
- * @param string $generator_name
- * @param integer $inc_by
+ * @param string $generator_name
+ * @param integer $inc_by
* @return integer
*/
public function insert_id($generator_name, $inc_by=0)
diff --git a/system/database/drivers/interbase/interbase_forge.php b/system/database/drivers/interbase/interbase_forge.php
index b8ea6a05d..023d278ce 100644
--- a/system/database/drivers/interbase/interbase_forge.php
+++ b/system/database/drivers/interbase/interbase_forge.php
@@ -82,7 +82,7 @@ class CI_DB_interbase_forge extends CI_DB_forge {
$sql .= $this->db->protect_identifiers($table)."(";
$current_field_count = 0;
- foreach ($fields as $field=>$attributes)
+ foreach ($fields as $field => $attributes)
{
// Numeric field names aren't allowed in databases, so if the key is
// numeric, we know it was assigned by PHP and the developer manually
diff --git a/system/database/drivers/interbase/interbase_result.php b/system/database/drivers/interbase/interbase_result.php
index be9cb6547..4b15eee20 100644
--- a/system/database/drivers/interbase/interbase_result.php
+++ b/system/database/drivers/interbase/interbase_result.php
@@ -265,7 +265,7 @@ class CI_DB_interbase_result extends CI_DB_result {
{
foreach ($this->result_object as $obj)
{
- $this->result_array[] = (array)$obj;
+ $this->result_array[] = (array) $obj;
}
return $this->result_array;
--
cgit v1.2.3-24-g4f1b
From ab189e162f20f1a7daae8bfd2b921e694c3f9df3 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 22 Feb 2012 10:34:23 -0500
Subject: Close services after using them, added dbutil->backup() method
---
.../database/drivers/interbase/interbase_driver.php | 3 +++
.../database/drivers/interbase/interbase_utility.php | 20 +++++++++++++++-----
user_guide_src/source/database/utilities.rst | 6 +++++-
3 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 33038ad80..b49d1fa74 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -139,6 +139,9 @@ class CI_DB_interbase_driver extends CI_DB {
if (($service = ibase_service_attach($this->hostname, $this->username, $this->password)))
{
$version = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
+
+ // Don't keep the service open
+ ibase_service_detach($service);
return $version;
}
diff --git a/system/database/drivers/interbase/interbase_utility.php b/system/database/drivers/interbase/interbase_utility.php
index e31021acb..76a0497c1 100644
--- a/system/database/drivers/interbase/interbase_utility.php
+++ b/system/database/drivers/interbase/interbase_utility.php
@@ -90,14 +90,24 @@ class CI_DB_interbase_utility extends CI_DB_utility {
/**
* Interbase/Firebird Export
*
- * @param array Preferences
+ * @param string $filename
* @return mixed
*/
- public function _backup($params = array())
+ public function backup($filename)
{
- // Currently unsupported
- // @todo See if can be implemented
- return $this->db->display_error('db_unsuported_feature');
+ if ($service = ibase_service_attach($this->db->hostname, $this->db->username, $this->db->password))
+ {
+ $res = ibase_backup($service, $this->db->database, $filename.'.fbk');
+
+ //Close the service connection
+ ibase_service_detach($service);
+
+ return $res;
+ }
+ else
+ {
+ return FALSE;
+ }
}
}
diff --git a/user_guide_src/source/database/utilities.rst b/user_guide_src/source/database/utilities.rst
index b0920109f..3805ffb87 100644
--- a/user_guide_src/source/database/utilities.rst
+++ b/user_guide_src/source/database/utilities.rst
@@ -161,7 +161,11 @@ $this->dbutil->backup()
Permits you to backup your full database or individual tables. The
backup data can be compressed in either Zip or Gzip format.
-.. note:: This features is only available for MySQL databases.
+.. note:: This features is only available for MySQL and Interbase/Firebird databases.
+
+.. note:: For Interbase/Firebird databases, the backup file name is the only parameter.
+
+ Eg. $this->dbutil->backup('db_backup_filename');
.. note:: Due to the limited execution time and memory available to PHP,
backing up very large databases may not be possible. If your database is
--
cgit v1.2.3-24-g4f1b
From 67ccdc02e1b66750b0e13eadcfacc47f01c1de67 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Mon, 27 Feb 2012 23:57:58 +0200
Subject: Do not create a CSRF cookie if CSRF protection is not enabled
---
system/core/Security.php | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/system/core/Security.php b/system/core/Security.php
index 1007f61f4..688aeba33 100755
--- a/system/core/Security.php
+++ b/system/core/Security.php
@@ -25,8 +25,6 @@
* @filesource
*/
-// ------------------------------------------------------------------------
-
/**
* Security Class
*
@@ -106,23 +104,27 @@ class CI_Security {
public function __construct()
{
- // CSRF config
- foreach(array('csrf_expire', 'csrf_token_name', 'csrf_cookie_name') as $key)
+ // Is CSRF protection enabled?
+ if (config_item('csrf_protection') === TRUE)
{
- if (FALSE !== ($val = config_item($key)))
+ // CSRF config
+ foreach (array('csrf_expire', 'csrf_token_name', 'csrf_cookie_name') as $key)
{
- $this->{'_'.$key} = $val;
+ if (FALSE !== ($val = config_item($key)))
+ {
+ $this->{'_'.$key} = $val;
+ }
}
- }
- // Append application specific cookie prefix
- if (config_item('cookie_prefix'))
- {
- $this->_csrf_cookie_name = config_item('cookie_prefix').$this->_csrf_cookie_name;
- }
+ // Append application specific cookie prefix
+ if (config_item('cookie_prefix'))
+ {
+ $this->_csrf_cookie_name = config_item('cookie_prefix').$this->_csrf_cookie_name;
+ }
- // Set the CSRF hash
- $this->_csrf_set_hash();
+ // Set the CSRF hash
+ $this->_csrf_set_hash();
+ }
log_message('debug', 'Security Class Initialized');
}
@@ -189,7 +191,7 @@ class CI_Security {
$expire = time() + $this->_csrf_expire;
$secure_cookie = (bool) config_item('cookie_secure');
- if ($secure_cookie && ( ! isset($_SERVER['HTTPS']) OR $_SERVER['HTTPS'] == 'off' OR ! $_SERVER['HTTPS']))
+ if ($secure_cookie && (empty($_SERVER['HTTPS']) OR $_SERVER['HTTPS'] === 'off'))
{
return FALSE;
}
@@ -358,7 +360,7 @@ class CI_Security {
foreach ($words as $word)
{
- $word = implode("\s*", str_split($word)) . "\s*";
+ $word = implode('\s*', str_split($word)).'\s*';
// We only want to do this when it is followed by a non-word character
// That way valid stuff like "dealer to" does not become "dealerto"
@@ -425,7 +427,6 @@ class CI_Security {
'\\1\\2(\\3)',
$str);
-
// Final clean up
// This adds a bit of extra precaution in case
// something got through the above filters
@@ -601,7 +602,7 @@ class CI_Security {
}
// find occurrences of illegal attribute strings with quotes (042 and 047 are octal quotes)
- preg_match_all('/('.implode('|', $evil_attributes).')\s*=\s*(\042|\047)([^\\2]*?)(\\2)/is', $str, $matches, PREG_SET_ORDER);
+ preg_match_all('/('.implode('|', $evil_attributes).')\s*=\s*(\042|\047)([^\\2]*?)(\\2)/is', $str, $matches, PREG_SET_ORDER);
foreach ($matches as $attr)
{
@@ -633,7 +634,7 @@ class CI_Security {
{
return '<'.$matches[1].$matches[2].$matches[3] // encode opening brace
// encode captured opening or closing brace to prevent recursive vectors:
- . str_replace(array('>', '<'), array('>', '<'), $matches[4]);
+ .str_replace(array('>', '<'), array('>', '<'), $matches[4]);
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 04ae0672aa9b9f8e590201e8c3817f307800e2c6 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Mon, 27 Feb 2012 23:59:18 +0200
Subject: Add changelog entry
---
user_guide_src/source/changelog.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index dc6b29516..7916c4e98 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -108,6 +108,7 @@ Bug fixes for 3.0
- Fixed a possible bug in ``CI_Input::is_ajax_request()`` where some clients might not send the X-Requested-With HTTP header value exactly as 'XmlHttpRequest'.
- Fixed a bug (#1039) - MySQL's _backup() method failed due to a table name not being escaped.
- Fixed a bug (#1070) - CI_DB_driver::initialize() didn't set a character set if a database is not selected.
+- Fixed a bug (#499) - a CSRF cookie was created even with CSRF protection being disabled.
Version 2.1.0
=============
--
cgit v1.2.3-24-g4f1b
From a10c8e17bbd1eb75aed1bb74523449f81ee393a2 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Wed, 29 Feb 2012 18:56:12 +0200
Subject: Add strtolower to the HTTPS check
---
system/core/Security.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system/core/Security.php b/system/core/Security.php
index 688aeba33..6f25fb5bb 100755
--- a/system/core/Security.php
+++ b/system/core/Security.php
@@ -191,7 +191,7 @@ class CI_Security {
$expire = time() + $this->_csrf_expire;
$secure_cookie = (bool) config_item('cookie_secure');
- if ($secure_cookie && (empty($_SERVER['HTTPS']) OR $_SERVER['HTTPS'] === 'off'))
+ if ($secure_cookie && (empty($_SERVER['HTTPS']) OR strtolower($_SERVER['HTTPS']) === 'off'))
{
return FALSE;
}
--
cgit v1.2.3-24-g4f1b
From 56784f67c35c75b706c5f9fc2950e58356e7ecec Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 29 Feb 2012 11:58:20 -0500
Subject: Finally figured out limit statement
---
.../drivers/interbase/interbase_driver.php | 26 +++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index b49d1fa74..e55a476bb 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -601,7 +601,31 @@ SQL;
*/
protected function _limit($sql, $limit, $offset)
{
- //There doesn't seem to be a limit clause?
+ // Keep the current sql string safe for a moment
+ $orig_sql = $sql;
+
+ // Limit clause depends on if Interbase or Firebird
+ if (stripos($this->_version(), 'firebird') !== FALSE)
+ {
+ $sql = 'FIRST '. (int) $limit;
+
+ if ($offset > 0)
+ {
+ $sql .= ' SKIP'. (int) $offset;
+ }
+ }
+ else
+ {
+ $sql = 'ROWS ' . (int) $limit;
+
+ if ($offset > 0)
+ {
+ $sql = 'ROWS '. (int) $offset . ' TO ' . ($limit + $offset);
+ }
+ }
+
+ $sql = preg_replace("`SELECT`i", "SELECT {$sql}", $orig_sql);
+
return $sql;
}
--
cgit v1.2.3-24-g4f1b
From 9a96082726feadadd50aef1287b4e0df61414c0d Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Wed, 29 Feb 2012 22:53:35 -0500
Subject: Fix 'skip' section of limit clause
---
system/database/drivers/interbase/interbase_driver.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index e55a476bb..4dca7c8a9 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -611,7 +611,7 @@ SQL;
if ($offset > 0)
{
- $sql .= ' SKIP'. (int) $offset;
+ $sql .= ' SKIP '. (int) $offset;
}
}
else
--
cgit v1.2.3-24-g4f1b
From ef7474c6ca9887283c964e17c450ca09559643c4 Mon Sep 17 00:00:00 2001
From: Ryan Dial
Date: Thu, 1 Mar 2012 16:11:36 -0500
Subject: compile binds before caching the query, otherwise the cached query
will never match the unbound query. updated changlog to mention bug fix.
---
system/database/DB_driver.php | 12 ++++++------
user_guide/changelog.html | 1 +
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 4dfb584f2..6161f149b 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -265,6 +265,12 @@ class CI_DB_driver {
$sql = preg_replace("/(\W)".$this->swap_pre."(\S+?)/", "\\1".$this->dbprefix."\\2", $sql);
}
+ // Compile binds if needed
+ if ($binds !== FALSE)
+ {
+ $sql = $this->compile_binds($sql, $binds);
+ }
+
// Is query caching enabled? If the query is a "read type"
// we will load the caching class and return the previously
// cached query if it exists
@@ -280,12 +286,6 @@ class CI_DB_driver {
}
}
- // Compile binds if needed
- if ($binds !== FALSE)
- {
- $sql = $this->compile_binds($sql, $binds);
- }
-
// Save the query for debugging
if ($this->save_queries == TRUE)
{
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index 76a0bcb19..b87e61ba8 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -79,6 +79,7 @@ Change Log
Fixed a bug - form_open() compared $action against site_url() instead of base_url()
Fixed a bug - CI_Upload::_file_mime_type() could've failed if mime_content_type() is used for the detection and returns FALSE.
Fixed a bug (#538) - Windows paths were ignored when using the Image Manipulation Class to create a new file.
+
Fixed a bug - When database caching was enabled, $this->db->query() checked the cache before binding variables which resulted in cached queries never being found.
--
cgit v1.2.3-24-g4f1b
From bcb3bbb97c8c046f80009a2bd8dffb96795ed239 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Fri, 2 Mar 2012 13:56:15 +0200
Subject: Added method visibility declarations to SQLite DB utility class
---
system/database/drivers/sqlite/sqlite_utility.php | 41 +++++++++--------------
1 file changed, 15 insertions(+), 26 deletions(-)
diff --git a/system/database/drivers/sqlite/sqlite_utility.php b/system/database/drivers/sqlite/sqlite_utility.php
index f00687e38..8fefcd9e2 100644
--- a/system/database/drivers/sqlite/sqlite_utility.php
+++ b/system/database/drivers/sqlite/sqlite_utility.php
@@ -1,13 +1,13 @@
-db_debug)
- {
- return $this->db->display_error('db_unsuported_feature');
- }
- return array();
+ return ($this->db_debug) ? $this->db->display_error('db_unsuported_feature') : FALSE;
}
// --------------------------------------------------------------------
@@ -61,14 +54,12 @@ class CI_DB_sqlite_utility extends CI_DB_utility {
/**
* Optimize table query
*
- * Is optimization even supported in SQLite?
- *
- * @access private
* @param string the table name
- * @return object
+ * @return bool
*/
- function _optimize_table($table)
+ public function _optimize_table($table)
{
+ // Not supported
return FALSE;
}
@@ -77,14 +68,12 @@ class CI_DB_sqlite_utility extends CI_DB_utility {
/**
* Repair table query
*
- * Are table repairs even supported in SQLite?
- *
- * @access private
* @param string the table name
- * @return object
+ * @return bool
*/
- function _repair_table($table)
+ public function _repair_table($table)
{
+ // Not supported
return FALSE;
}
@@ -93,16 +82,16 @@ class CI_DB_sqlite_utility extends CI_DB_utility {
/**
* SQLite Export
*
- * @access private
* @param array Preferences
* @return mixed
*/
- function _backup($params = array())
+ public function _backup($params = array())
{
// Currently unsupported
return $this->db->display_error('db_unsuported_feature');
}
+
}
/* End of file sqlite_utility.php */
-/* Location: ./system/database/drivers/sqlite/sqlite_utility.php */
\ No newline at end of file
+/* Location: ./system/database/drivers/sqlite/sqlite_utility.php */
--
cgit v1.2.3-24-g4f1b
From 4be5de1d11eefd9f0b7cf0589a2942f067cefe35 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Fri, 2 Mar 2012 15:45:41 +0200
Subject: Replaced DB methods _error_message() and _error_number() with error()
(issue #1097)
---
system/database/DB_driver.php | 22 +++++-----
system/database/drivers/cubrid/cubrid_driver.php | 25 +++---------
system/database/drivers/mssql/mssql_driver.php | 26 ++++--------
system/database/drivers/mysql/mysql_driver.php | 21 +++-------
system/database/drivers/mysqli/mysqli_driver.php | 21 +++-------
system/database/drivers/oci8/oci8_driver.php | 35 ++++------------
system/database/drivers/odbc/odbc_driver.php | 23 +++--------
system/database/drivers/pdo/pdo_driver.php | 35 ++++++++--------
system/database/drivers/postgre/postgre_driver.php | 23 +++--------
system/database/drivers/sqlite/sqlite_driver.php | 25 ++++--------
system/database/drivers/sqlsrv/sqlsrv_driver.php | 47 +++++++++-------------
user_guide_src/source/changelog.rst | 7 ++--
user_guide_src/source/database/queries.rst | 17 ++++++++
13 files changed, 122 insertions(+), 205 deletions(-)
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 5f435e363..03a222f9b 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -330,30 +330,28 @@ class CI_DB_driver {
// This will trigger a rollback if transactions are being used
$this->_trans_status = FALSE;
- // Grab the error number and message now, as we might run some
- // additional queries before displaying the error
- $error_no = $this->_error_number();
- $error_msg = $this->_error_message();
+ // Grab the error now, as we might run some additional queries before displaying the error
+ $error = $this->error();
// Log errors
- log_message('error', 'Query error: '.$error_msg);
+ log_message('error', 'Query error: '.$error['message']);
if ($this->db_debug)
{
// We call this function in order to roll-back queries
- // if transactions are enabled. If we don't call this here
+ // if transactions are enabled. If we don't call this here
// the error message will trigger an exit, causing the
// transactions to remain in limbo.
$this->trans_complete();
// Display errors
return $this->display_error(
- array(
- 'Error Number: '.$error_no,
- $error_msg,
- $sql
- )
- );
+ array(
+ 'Error Number: '.$error['code'],
+ $error['message'],
+ $sql
+ )
+ );
}
return FALSE;
diff --git a/system/database/drivers/cubrid/cubrid_driver.php b/system/database/drivers/cubrid/cubrid_driver.php
index 42f08fbf6..cb33919a4 100644
--- a/system/database/drivers/cubrid/cubrid_driver.php
+++ b/system/database/drivers/cubrid/cubrid_driver.php
@@ -453,31 +453,18 @@ class CI_DB_cubrid_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @access private
- * @return string
- */
- function _error_message()
- {
- return cubrid_error($this->conn_id);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @access private
- * @return integer
+ * @return array
*/
- function _error_number()
+ public function error()
{
- return cubrid_errno($this->conn_id);
+ return array('code' => cubrid_errno($this->conn_id), 'message' => cubrid_error($this->conn_id));
}
- // --------------------------------------------------------------------
-
/**
* Escape the SQL Identifiers
*
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index 2a4f2b575..188c91f9b 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -438,28 +438,18 @@ class CI_DB_mssql_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @access private
- * @return string
- */
- function _error_message()
- {
- return mssql_get_last_message();
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @access private
- * @return integer
+ * @return array
*/
- function _error_number()
+ public function error()
{
- // Are error numbers supported?
- return '';
+ $query = $this->query('SELECT @@ERROR AS code');
+ $query = $query->row();
+ return array('code' => $query->code, 'message' => mssql_get_last_message());
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index c88a8a766..a7f08d1a8 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -417,25 +417,16 @@ class CI_DB_mysql_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @return string
- */
- protected function _error_message()
- {
- return mysql_error($this->conn_id);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @return int
+ * @return array
*/
- protected function _error_number()
+ public function error()
{
- return mysql_errno($this->conn_id);
+ return array('code' => mysql_errno($this->conn_id), 'message' => mysql_error($this->conn_id));
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index dbba12e15..031371345 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -418,25 +418,16 @@ class CI_DB_mysqli_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @return string
- */
- protected function _error_message()
- {
- return mysqli_error($this->conn_id);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @return int
+ * @return array
*/
- protected function _error_number()
+ public function error()
{
- return mysqli_errno($this->conn_id);
+ return array('code' => mysqli_errno($this->conn_id), 'message' => mysqli_error($this->conn_id));
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 6da6dc724..97efb4647 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -527,39 +527,18 @@ class CI_DB_oci8_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @return string
- */
- protected function _error_message()
- {
- $error = $this->_oci8_error_data();
- return $error['message'];
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
- *
- * @return string
- */
- protected function _error_number()
- {
- $error = $this->_oci8_error_data();
- return $error['code'];
- }
-
- // --------------------------------------------------------------------
-
- /**
- * OCI8-specific method to get errors.
- * Used by _error_message() and _error_code().
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
* @return array
*/
- protected function _oci8_error_data()
+ public function error()
{
+ /* oci_error() returns an array that already contains the
+ * 'code' and 'message' keys, so we can just return it.
+ */
if (is_resource($this->curs_id))
{
return oci_error($this->curs_id);
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index abb660324..5a93f7cad 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -398,27 +398,16 @@ class CI_DB_odbc_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @access private
- * @return string
- */
- function _error_message()
- {
- return odbc_errormsg($this->conn_id);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @access private
- * @return integer
+ * @return array
*/
- function _error_number()
+ public function error()
{
- return odbc_error($this->conn_id);
+ return array('code' => odbc_error($this->conn_id), 'message' => odbc_errormsg($this->conn_id));
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php
index 90f0fd791..de5e1f05e 100644
--- a/system/database/drivers/pdo/pdo_driver.php
+++ b/system/database/drivers/pdo/pdo_driver.php
@@ -609,29 +609,30 @@ class CI_DB_pdo_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @access private
- * @return string
+ * Returns an array containing code and message of the last
+ * database error that has occured.
+ *
+ * @return array
*/
- function _error_message()
+ public function error()
{
- $error_array = $this->conn_id->errorInfo();
+ $error = array('code' => '00000', 'message' => '');
+ $pdo_error = $this->conn_id->errorInfo();
- return $error_array[2];
- }
+ if (empty($pdo_error[0]))
+ {
+ return $error;
+ }
- // --------------------------------------------------------------------
+ $error['code'] = isset($pdo_error[1]) ? $pdo_error[0].'/'.$pdo_error[1] : $pdo_error[0];
+ if (isset($pdo_error[2]))
+ {
+ $error['message'] = $pdo_error[2];
+ }
- /**
- * The error message number
- *
- * @access private
- * @return integer
- */
- function _error_number()
- {
- return $this->conn_id->errorCode();
+ return $error;
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 89541e5fa..0fcd954e9 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -443,27 +443,16 @@ class CI_DB_postgre_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @access private
- * @return string
- */
- function _error_message()
- {
- return pg_last_error($this->conn_id);
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @access private
- * @return integer
+ * @return array
*/
- function _error_number()
+ public function error()
{
- return '';
+ return array('code' => '', 'message' => pg_last_error($this->conn_id));
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index 718501b20..3e4b37320 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -412,27 +412,18 @@ class CI_DB_sqlite_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @access private
- * @return string
- */
- function _error_message()
- {
- return sqlite_error_string(sqlite_last_error($this->conn_id));
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @access private
- * @return integer
+ * @return array
*/
- function _error_number()
+ public function error()
{
- return sqlite_last_error($this->conn_id);
+ $error = array('code' => sqlite_last_error($this->conn_id));
+ $error['message'] = sqlite_error_string($error['code']);
+ return $error;
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/sqlsrv/sqlsrv_driver.php b/system/database/drivers/sqlsrv/sqlsrv_driver.php
index 9b9038189..03d7c7199 100644
--- a/system/database/drivers/sqlsrv/sqlsrv_driver.php
+++ b/system/database/drivers/sqlsrv/sqlsrv_driver.php
@@ -406,46 +406,39 @@ class CI_DB_sqlsrv_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @return string
+ * Returns an array containing code and message of the last
+ * database error that has occured.
+ *
+ * @return array
*/
- protected function _error_message()
+ public function error()
{
- $error = sqlsrv_errors();
- if ( ! is_array($error))
+ $error = array('code' => '00000', 'message' => '');
+ $sqlsrv_errors = sqlsrv_errors(SQLSRV_ERR_ERRORS);
+
+ if ( ! is_array($sqlsrv_errors))
{
- return '';
+ return $error;
}
- $error = array_shift($error);
- return isset($error['message']) ? $error['message'] : '';
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
- *
- * @return string
- */
- protected function _error_number()
- {
- $error = sqlsrv_errors();
- if ( ! is_array($error))
+ $sqlsrv_error = array_shift($sqlsrv_errors);
+ if (isset($sqlsrv_error['SQLSTATE']))
{
- return '';
+ $error['code'] = isset($sqlsrv_error['code']) ? $sqlsrv_error['SQLSTATE'].'/'.$sqlsrv_error['code'] : $sqlsrv_error['SQLSTATE'];
}
- elseif (isset($error['SQLSTATE']))
+ elseif (isset($sqlsrv_error['code']))
{
- return isset($error['code']) ? $error['SQLSTATE'].'/'.$error['code'] : $error['SQLSTATE'];
+ $error['code'] = $sqlsrv_error['code'];
}
- elseif (isset($error['code']))
+
+ if (isset($sqlsrv_error['message']))
{
- return $error['code'];
+ $error['message'] = $sqlsrv_error['message'];
}
- return '';
+ return $error;
}
// --------------------------------------------------------------------
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index cece286c5..cf139bc1c 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -54,7 +54,8 @@ Release Date: Not Released
- MySQLi driver now supports persistent connections when running on PHP >= 5.3.
- Added dsn if the group connections in the config use PDO or any driver which need DSN.
- Improved PDO database support.
- - An optional database name parameter was added db_select().
+ - Added an optional database name parameter to db_select().
+ - Replaced the _error_message() and _error_number() methods with error(), that returns an array containing the last database error code and message.
- Libraries
@@ -116,13 +117,13 @@ Bug fixes for 3.0
- Fixed a bug (#81) - ODBC's list_fields() and field_data() methods skipped the first column due to odbc_field_*() functions' index starting at 1 instead of 0.
- Fixed a bug (#129) - ODBC's num_rows() returned -1 in some cases, due to not all subdrivers supporting the odbc_num_rows() function.
- Fixed a bug (#153) - E_NOTICE being generated by getimagesize() in the :doc:`File Uploading Library `.
-- Fixed a bug (#611) - SQLSRV's _error_message() and _error_number() methods used to issue warnings when there's no actual error.
+- Fixed a bug (#611) - SQLSRV's error handling methods used to issue warnings when there's no actual error.
- Fixed a bug (#1036) - is_write_type() method in the :doc:`Database Library ` didn't return TRUE for RENAME and OPTIMIZE queries.
- Fixed a bug in PDO's _version() method where it used to return the client version as opposed to the server one.
- Fixed a bug in PDO's insert_id() method where it could've failed if it's used with Postgre versions prior to 8.1.
- Fixed a bug in CUBRID's affected_rows() method where a connection resource was passed to cubrid_affected_rows() instead of a result.
- Fixed a bug (#638) - db_set_charset() ignored its arguments and always used the configured charset and collation instead.
-- Fixed a bug (#413) - Oracle's _error_message() and _error_number() methods used to only return connection-related errors.
+- Fixed a bug (#413) - Oracle's error handling methods used to only return connection-related errors.
- Fixed a bug (#804) - Profiler library was trying to handle objects as strings in some cases, resulting in warnings being issued by htmlspecialchars().
- Fixed a bug (#1101) - MySQL/MySQLi result method field_data() was implemented as if it was handling a DESCRIBE result instead of the actual result set.
- Fixed a bug in Oracle's :doc:`Database Forge Class ` method _create_table() where it failed with AUTO_INCREMENT as it's not supported.
diff --git a/user_guide_src/source/database/queries.rst b/user_guide_src/source/database/queries.rst
index 971d5d61d..15a73614a 100644
--- a/user_guide_src/source/database/queries.rst
+++ b/user_guide_src/source/database/queries.rst
@@ -112,3 +112,20 @@ The secondary benefit of using binds is that the values are
automatically escaped, producing safer queries. You don't have to
remember to manually escape data; the engine does it automatically for
you.
+
+***************
+Handling Errors
+***************
+
+$this->db->error();
+===================
+
+If you need to get the last error that has occured, the error() method
+will return an array containing its code and message. Here's a quick
+example::
+
+ if ( ! $this->db->simple_query('SELECT `example_field` FROM `example_table`'))
+ {
+ $error = $this->db->error(); // Has keys 'code' and 'message'
+ }
+
--
cgit v1.2.3-24-g4f1b
From 00df2e3183dc1cbef82dafe6cc432d73fe659ae9 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Fri, 2 Mar 2012 18:37:16 +0200
Subject: Replace Interbase _error_message(), _error_number() with the new
error() method
---
.../drivers/interbase/interbase_driver.php | 48 +++++++++-------------
1 file changed, 19 insertions(+), 29 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 4dca7c8a9..17fcffa65 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -58,7 +58,7 @@ class CI_DB_interbase_driver extends CI_DB {
*/
protected $_count_string = "SELECT COUNT(*) AS ";
protected $_random_keyword = ' Random()'; // database specific random keyword
-
+
// Keeps track of the resource for the current transaction
protected $trans;
@@ -139,12 +139,12 @@ class CI_DB_interbase_driver extends CI_DB {
if (($service = ibase_service_attach($this->hostname, $this->username, $this->password)))
{
$version = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
-
+
// Don't keep the service open
ibase_service_detach($service);
return $version;
}
-
+
return FALSE;
}
@@ -203,7 +203,7 @@ class CI_DB_interbase_driver extends CI_DB {
$this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;
$this->trans = @ibase_trans($this->conn_id);
-
+
return TRUE;
}
@@ -226,7 +226,7 @@ class CI_DB_interbase_driver extends CI_DB {
{
return TRUE;
}
-
+
return @ibase_commit($this->trans);
}
@@ -398,7 +398,7 @@ SQL;
protected function _field_data($table)
{
// Need to find a more efficient way to do this
- // but Interbase/Firebird seems to lack the
+ // but Interbase/Firebird seems to lack the
// limit clause
return "SELECT * FROM {$table}";
}
@@ -406,25 +406,16 @@ SQL;
// --------------------------------------------------------------------
/**
- * The error message string
+ * Error
*
- * @return string
- */
- protected function _error_message()
- {
- return ibase_errmsg();
- }
-
- // --------------------------------------------------------------------
-
- /**
- * The error message number
+ * Returns an array containing code and message of the last
+ * database error that has occured.
*
- * @return integer
+ * @return array
*/
- protected function _error_number()
+ public function error()
{
- return ibase_errcode();
+ return array('code' => ibase_errcode(), 'message' => ibase_errmsg());
}
// --------------------------------------------------------------------
@@ -603,12 +594,12 @@ SQL;
{
// Keep the current sql string safe for a moment
$orig_sql = $sql;
-
+
// Limit clause depends on if Interbase or Firebird
if (stripos($this->_version(), 'firebird') !== FALSE)
{
$sql = 'FIRST '. (int) $limit;
-
+
if ($offset > 0)
{
$sql .= ' SKIP '. (int) $offset;
@@ -617,16 +608,14 @@ SQL;
else
{
$sql = 'ROWS ' . (int) $limit;
-
+
if ($offset > 0)
{
$sql = 'ROWS '. (int) $offset . ' TO ' . ($limit + $offset);
}
}
-
- $sql = preg_replace("`SELECT`i", "SELECT {$sql}", $orig_sql);
-
- return $sql;
+
+ return preg_replace('`SELECT`i', "SELECT {$sql}", $orig_sql);
}
// --------------------------------------------------------------------
@@ -641,7 +630,8 @@ SQL;
{
@ibase_close($conn_id);
}
+
}
/* End of file interbase_driver.php */
-/* Location: ./system/database/drivers/interbase/interbase_driver.php */
\ No newline at end of file
+/* Location: ./system/database/drivers/interbase/interbase_driver.php */
--
cgit v1.2.3-24-g4f1b
From f142192a97033c4f8d398212443bc4776bd2ca98 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 2 Mar 2012 11:51:42 -0500
Subject: Limit db session select to single row
---
system/libraries/Session.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/system/libraries/Session.php b/system/libraries/Session.php
index 66b39a6a2..dd50a91e1 100644
--- a/system/libraries/Session.php
+++ b/system/libraries/Session.php
@@ -219,7 +219,7 @@ class CI_Session {
$this->CI->db->where('user_agent', $session['user_agent']);
}
- $query = $this->CI->db->get($this->sess_table_name);
+ $query = $this->CI->db->limit(1)->get($this->sess_table_name);
// No result? Kill it!
if ($query->num_rows() === 0)
--
cgit v1.2.3-24-g4f1b
From c7916c1048f54fcff6427c25fee4f0815d4bcfa5 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 2 Mar 2012 11:53:15 -0500
Subject: Removed welcome_message view changes
---
application/views/welcome_message.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/application/views/welcome_message.php b/application/views/welcome_message.php
index 4d9161aa0..acc36b6d4 100644
--- a/application/views/welcome_message.php
+++ b/application/views/welcome_message.php
@@ -89,8 +89,6 @@
margin: 10px;
border: 1px solid #D0D0D0;
-webkit-box-shadow: 0 0 8px #D0D0D0;
- -moz-box-shadow: 0 0 8px #D0D0D0;
- box-shadow: 0 0 8px #D0D0D0;
}
--
cgit v1.2.3-24-g4f1b
From 7fcc7bdf7eb9c65920b1e14f242e31e3d71d1fd0 Mon Sep 17 00:00:00 2001
From: Diogo Osório
Date: Fri, 2 Mar 2012 16:54:52 +0000
Subject: #1080 - Check if the SMTP connection and authentication were
successfull.
---
system/libraries/Email.php | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index c8a5b41af..39a7059dd 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -1359,6 +1359,7 @@ class CI_Email {
if ( ! $this->$method())
{
$this->_set_error_message('lang:email_send_failure_' . ($this->_get_protocol() === 'mail' ? 'phpmail' : $this->_get_protocol()));
+ return FALSE;
}
$this->_set_error_message('lang:email_sent', $this->_get_protocol());
@@ -1433,8 +1434,10 @@ class CI_Email {
return FALSE;
}
- $this->_smtp_connect();
- $this->_smtp_authenticate();
+ if ( !($this->_smtp_connect() && $this->_smtp_authenticate()) )
+ {
+ return FALSE;
+ }
$this->_send_command('from', $this->clean_email($this->_headers['From']));
--
cgit v1.2.3-24-g4f1b
From 78ca39bc8c4b7edf0468e4a0a7251f808f352414 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Fri, 2 Mar 2012 19:04:31 +0200
Subject: Removed db_set_charset() from Interbase driver (no longer needed)
---
system/database/drivers/interbase/interbase_driver.php | 15 ---------------
1 file changed, 15 deletions(-)
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 17fcffa65..51e814e16 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -114,21 +114,6 @@ class CI_DB_interbase_driver extends CI_DB {
// --------------------------------------------------------------------
- /**
- * Set client character set
- *
- * @param string
- * @param string
- * @return bool
- */
- public function db_set_charset($charset, $collation)
- {
- // Must be determined at connection
- return TRUE;
- }
-
- // --------------------------------------------------------------------
-
/**
* Version number query string
*
--
cgit v1.2.3-24-g4f1b
From 92aeaaa6b56cd02908641b4ee481a0c246874f29 Mon Sep 17 00:00:00 2001
From: Timothy Warren
Date: Fri, 2 Mar 2012 12:18:11 -0500
Subject: Updated changelog
---
user_guide_src/source/changelog.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 69d7efc6c..9a7fc814c 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -78,6 +78,7 @@ Release Date: Not Released
- Removed SHA1 function in the :doc:`Encryption Library `.
- Added $config['csrf_regeneration'] to the CSRF protection in the :doc:`Security library `, which makes token regeneration optional.
- Added function error_array() to return all error messages as an array in the Form_validation class.
+ - Changed the Session library to select only one row when using database sessions.
- Core
--
cgit v1.2.3-24-g4f1b
From 593f798a0b463f45e00a207e4fe4b8cc82dedc35 Mon Sep 17 00:00:00 2001
From: Diogo Osório
Date: Fri, 2 Mar 2012 18:04:17 +0000
Subject: Made the code more readable, updated the changelog.
---
system/libraries/Email.php | 2 +-
user_guide_src/source/changelog.rst | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 39a7059dd..8d839d0c9 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -1434,7 +1434,7 @@ class CI_Email {
return FALSE;
}
- if ( !($this->_smtp_connect() && $this->_smtp_authenticate()) )
+ if ( ! $this->_smtp_connect() OR ! $this->_smtp_authenticate())
{
return FALSE;
}
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 69d7efc6c..1eae6fea0 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -128,6 +128,7 @@ Bug fixes for 3.0
- Fixed a bug (#804) - Profiler library was trying to handle objects as strings in some cases, resulting in warnings being issued by htmlspecialchars().
- Fixed a bug (#1101) - MySQL/MySQLi result method field_data() was implemented as if it was handling a DESCRIBE result instead of the actual result set.
- Fixed a bug in Oracle's :doc:`Database Forge Class ` method _create_table() where it failed with AUTO_INCREMENT as it's not supported.
+- Fixed a bug (#1080) - When using the SMTP protocol, the :doc:`Email Library ` send() method was returning TRUE even if the connection/authentication against the server failed.
Version 2.1.1
=============
--
cgit v1.2.3-24-g4f1b
From 08856b8738ea4fc17b13986c9f2619383cb4a6e9 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Sat, 3 Mar 2012 03:19:28 +0200
Subject: Improve DB version() implementation and add pg_version() support
---
system/database/DB_driver.php | 46 ++++++++++++----------
system/database/drivers/cubrid/cubrid_driver.php | 14 +++----
.../drivers/interbase/interbase_driver.php | 15 ++++---
system/database/drivers/mssql/mssql_driver.php | 7 ++--
system/database/drivers/mysql/mysql_driver.php | 8 ++--
system/database/drivers/mysqli/mysqli_driver.php | 8 ++--
system/database/drivers/oci8/oci8_driver.php | 11 +++---
system/database/drivers/odbc/odbc_driver.php | 13 ------
system/database/drivers/pdo/pdo_driver.php | 10 +++--
system/database/drivers/postgre/postgre_driver.php | 27 ++++++++++---
system/database/drivers/sqlite/sqlite_driver.php | 9 +++--
system/database/drivers/sqlite/sqlite_forge.php | 4 +-
system/database/drivers/sqlsrv/sqlsrv_driver.php | 24 +++++++----
user_guide_src/source/changelog.rst | 2 +
14 files changed, 111 insertions(+), 87 deletions(-)
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index 075cab2c9..b41a42051 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -222,36 +222,40 @@ class CI_DB_driver {
// --------------------------------------------------------------------
/**
- * Database Version Number. Returns a string containing the
- * version of the database being used
+ * Database version number
+ *
+ * Returns a string containing the version of the database being used.
+ * Most drivers will override this method.
*
- * @access public
* @return string
*/
- function version()
+ public function version()
{
- if (FALSE === ($sql = $this->_version()))
+ if (isset($this->data_cache['version']))
{
- if ($this->db_debug)
- {
- return $this->display_error('db_unsupported_function');
- }
- return FALSE;
+ return $this->data_cache['version'];
}
- // Some DBs have functions that return the version, and don't run special
- // SQL queries per se. In these instances, just return the result.
- $driver_version_exceptions = array('oci8', 'sqlite', 'cubrid', 'pdo', 'mysqli', 'interbase');
-
- if (in_array($this->dbdriver, $driver_version_exceptions))
- {
- return $sql;
- }
- else
+ if (FALSE === ($sql = $this->_version()))
{
- $query = $this->query($sql);
- return $query->row('ver');
+ return ($this->db_debug) ? $this->display_error('db_unsupported_function') : FALSE;
}
+
+ $query = $this->query($sql);
+ $query = $query->row();
+ return $this->data_cache['version'] = $query->ver;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Version number query string
+ *
+ * @return string
+ */
+ protected function _version()
+ {
+ return 'SELECT VERSION() AS ver';
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/cubrid/cubrid_driver.php b/system/database/drivers/cubrid/cubrid_driver.php
index cb33919a4..afdaef351 100644
--- a/system/database/drivers/cubrid/cubrid_driver.php
+++ b/system/database/drivers/cubrid/cubrid_driver.php
@@ -156,19 +156,15 @@ class CI_DB_cubrid_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
- * @access public
* @return string
*/
- function _version()
+ public function version()
{
- // To obtain the CUBRID Server version, no need to run the SQL query.
- // CUBRID PHP API provides a function to determin this value.
- // This is why we also need to add 'cubrid' value to the list of
- // $driver_version_exceptions array in DB_driver class in
- // version() function.
- return cubrid_get_server_info($this->conn_id);
+ return isset($this->data_cache['version'])
+ ? $this->data_cache['version']
+ : $this->data_cache['version'] = cubrid_get_server_info($this->conn_id);
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/interbase/interbase_driver.php b/system/database/drivers/interbase/interbase_driver.php
index 51e814e16..f4bd9e271 100644
--- a/system/database/drivers/interbase/interbase_driver.php
+++ b/system/database/drivers/interbase/interbase_driver.php
@@ -115,19 +115,24 @@ class CI_DB_interbase_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
* @return string
*/
- protected function _version()
+ public function version()
{
+ if (isset($this->data_cache['version']))
+ {
+ return $this->data_cache['version'];
+ }
+
if (($service = ibase_service_attach($this->hostname, $this->username, $this->password)))
{
- $version = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
+ $this->data_cache['version'] = ibase_server_info($service, IBASE_SVC_SERVER_VERSION);
// Don't keep the service open
ibase_service_detach($service);
- return $version;
+ return $this->data_cache['version'];
}
return FALSE;
@@ -581,7 +586,7 @@ SQL;
$orig_sql = $sql;
// Limit clause depends on if Interbase or Firebird
- if (stripos($this->_version(), 'firebird') !== FALSE)
+ if (stripos($this->version(), 'firebird') !== FALSE)
{
$sql = 'FIRST '. (int) $limit;
diff --git a/system/database/drivers/mssql/mssql_driver.php b/system/database/drivers/mssql/mssql_driver.php
index 188c91f9b..147c63483 100644
--- a/system/database/drivers/mssql/mssql_driver.php
+++ b/system/database/drivers/mssql/mssql_driver.php
@@ -339,12 +339,11 @@ class CI_DB_mssql_driver extends CI_DB {
/**
* Version number query string
*
- * @access public
- * @return string
+ * @return string
*/
- function _version()
+ protected function _version()
{
- return "SELECT @@VERSION AS ver";
+ return 'SELECT @@VERSION AS ver';
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index a7f08d1a8..7108a6db1 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -157,13 +157,15 @@ class CI_DB_mysql_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
* @return string
*/
- protected function _version()
+ public function version()
{
- return 'SELECT version() AS ver';
+ return isset($this->data_cache['version'])
+ ? $this->data_cache['version']
+ : $this->data_cache['version'] = @mysql_get_server_info($this->conn_id);
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 031371345..19353944d 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -157,13 +157,15 @@ class CI_DB_mysqli_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
* @return string
*/
- protected function _version()
+ public function version()
{
- return @mysqli_get_server_info($this->conn_id);
+ return isset($this->data_cache['version'])
+ ? $this->data_cache['version']
+ : $this->data_cache['version'] = @mysqli_get_server_info($this->conn_id);
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/oci8/oci8_driver.php b/system/database/drivers/oci8/oci8_driver.php
index 97efb4647..35cafff6c 100644
--- a/system/database/drivers/oci8/oci8_driver.php
+++ b/system/database/drivers/oci8/oci8_driver.php
@@ -139,14 +139,15 @@ class CI_DB_oci8_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
- * @access protected
- * @return string
+ * @return string
*/
- protected function _version()
+ public function version()
{
- return oci_server_version($this->conn_id);
+ return isset($this->data_cache['version'])
+ ? $this->data_cache['version']
+ : $this->data_cache['version'] = oci_server_version($this->conn_id);
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 5a93f7cad..779b0c62f 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -123,19 +123,6 @@ class CI_DB_odbc_driver extends CI_DB {
// --------------------------------------------------------------------
- /**
- * Version number query string
- *
- * @access public
- * @return string
- */
- function _version()
- {
- return "SELECT version() AS ver";
- }
-
- // --------------------------------------------------------------------
-
/**
* Execute the query
*
diff --git a/system/database/drivers/pdo/pdo_driver.php b/system/database/drivers/pdo/pdo_driver.php
index de5e1f05e..8fdfd58fb 100644
--- a/system/database/drivers/pdo/pdo_driver.php
+++ b/system/database/drivers/pdo/pdo_driver.php
@@ -289,13 +289,15 @@ class CI_DB_pdo_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
* @return string
*/
- protected function _version()
+ public function version()
{
- return $this->conn_id->getAttribute(PDO::ATTR_SERVER_VERSION);
+ return isset($this->data_cache['version'])
+ ? $this->data_cache['version']
+ : $this->data_cache['version'] = $this->conn_id->getAttribute(PDO::ATTR_SERVER_VERSION);
}
// --------------------------------------------------------------------
@@ -499,7 +501,7 @@ class CI_DB_pdo_driver extends CI_DB {
*/
public function insert_id($name = NULL)
{
- if ($this->pdodriver === 'pgsql' && $name === NULL && $this->_version() >= '8.1')
+ if ($this->pdodriver === 'pgsql' && $name === NULL && $this->version() >= '8.1')
{
$query = $this->query('SELECT LASTVAL() AS ins_id');
$query = $query->row();
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 0fcd954e9..d6681086a 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -147,14 +147,30 @@ class CI_DB_postgre_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
- * @access public
* @return string
*/
- function _version()
+ public function version()
{
- return "SELECT version() AS ver";
+ if (isset($this->data_cache['version']))
+ {
+ return $this->data_cache['version'];
+ }
+
+ if (($pg_version = pg_version($this->conn_id)) === FALSE)
+ {
+ return FALSE;
+ }
+
+ /* If PHP was compiled with PostgreSQL lib versions earlier
+ * than 7.4, pg_version() won't return the server version
+ * and so we'll have to fall back to running a query in
+ * order to get it.
+ */
+ return isset($pg_version['server'])
+ ? $this->data_cache['version'] = $pg_version['server']
+ : parent::version();
}
// --------------------------------------------------------------------
@@ -323,8 +339,7 @@ class CI_DB_postgre_driver extends CI_DB {
*/
function insert_id()
{
- $v = $this->_version();
- $v = $v['server'];
+ $v = $this->version();
$table = func_num_args() > 0 ? func_get_arg(0) : NULL;
$column = func_num_args() > 1 ? func_get_arg(1) : NULL;
diff --git a/system/database/drivers/sqlite/sqlite_driver.php b/system/database/drivers/sqlite/sqlite_driver.php
index 3e4b37320..3eaec949c 100644
--- a/system/database/drivers/sqlite/sqlite_driver.php
+++ b/system/database/drivers/sqlite/sqlite_driver.php
@@ -141,14 +141,15 @@ class CI_DB_sqlite_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
+ * Database version number
*
- * @access public
* @return string
*/
- function _version()
+ public function version()
{
- return sqlite_libversion();
+ return isset($this->data_cache['version'])
+ ? $this->data_cache['version']
+ : $this->data_cache['version'] = sqlite_libversion();
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/sqlite/sqlite_forge.php b/system/database/drivers/sqlite/sqlite_forge.php
index 2b723be0b..fd0f3eb98 100644
--- a/system/database/drivers/sqlite/sqlite_forge.php
+++ b/system/database/drivers/sqlite/sqlite_forge.php
@@ -89,7 +89,7 @@ class CI_DB_sqlite_forge extends CI_DB_forge {
$sql = 'CREATE TABLE ';
// IF NOT EXISTS added to SQLite in 3.3.0
- if ($if_not_exists === TRUE && version_compare($this->db->_version(), '3.3.0', '>=') === TRUE)
+ if ($if_not_exists === TRUE && version_compare($this->db->version(), '3.3.0', '>=') === TRUE)
{
$sql .= 'IF NOT EXISTS ';
}
@@ -274,4 +274,4 @@ class CI_DB_sqlite_forge extends CI_DB_forge {
}
/* End of file sqlite_forge.php */
-/* Location: ./system/database/drivers/sqlite/sqlite_forge.php */
\ No newline at end of file
+/* Location: ./system/database/drivers/sqlite/sqlite_forge.php */
diff --git a/system/database/drivers/sqlsrv/sqlsrv_driver.php b/system/database/drivers/sqlsrv/sqlsrv_driver.php
index 03d7c7199..5c90cb4f2 100644
--- a/system/database/drivers/sqlsrv/sqlsrv_driver.php
+++ b/system/database/drivers/sqlsrv/sqlsrv_driver.php
@@ -317,15 +317,23 @@ class CI_DB_sqlsrv_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Version number query string
- *
- * @access public
- * @return string
- */
- function _version()
+ * Database version number
+ *
+ * @return string
+ */
+ public function version()
{
- $info = sqlsrv_server_info($this->conn_id);
- return sprintf("select '%s' as ver", $info['SQLServerVersion']);
+ if (isset($this->data_cache['version']))
+ {
+ return $this->data_cache['version'];
+ }
+
+ if (($info = sqlsrv_server_info($this->conn_id)) === FALSE)
+ {
+ return FALSE;
+ }
+
+ return $this->data_cache['version'] = $info['SQLServerVersion'];
}
// --------------------------------------------------------------------
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index f00021cd9..ca36ecd31 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -57,6 +57,8 @@ Release Date: Not Released
- Added Interbase/Firebird database support via the "interbase" driver
- Added an optional database name parameter to db_select().
- Replaced the _error_message() and _error_number() methods with error(), that returns an array containing the last database error code and message.
+ - Improved version() implementation so that drivers that have a native function to get the version number don't have to be defined in the core DB_driver class.
+ - PostgreSQL driver now uses pg_version() to get the database version number, when possible.
- Libraries
--
cgit v1.2.3-24-g4f1b
From 8e89df8f92444eb02dc73b6c3e66077a4fb3f710 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Sat, 3 Mar 2012 03:48:12 +0200
Subject: Add db_set_charset() support for PostgreSQL and change its
implementation for 'mysql'
---
system/database/drivers/mysql/mysql_driver.php | 2 +-
system/database/drivers/postgre/postgre_driver.php | 13 +++++++++++++
user_guide_src/source/changelog.rst | 1 +
3 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 7108a6db1..84f7791c7 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -147,7 +147,7 @@ class CI_DB_mysql_driver extends CI_DB {
* @param string
* @return bool
*/
- public function db_set_charset($charset, $collation)
+ protected function _db_set_charset($charset, $collation)
{
return function_exists('mysql_set_charset')
? @mysql_set_charset($charset, $this->conn_id)
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index d6681086a..8df90f6a4 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -146,6 +146,19 @@ class CI_DB_postgre_driver extends CI_DB {
// --------------------------------------------------------------------
+ /**
+ * Set client character set
+ *
+ * @param string
+ * @return bool
+ */
+ protected function _db_set_charset($charset)
+ {
+ return (pg_set_client_encoding($this->conn_id, $charset) === 0);
+ }
+
+ // --------------------------------------------------------------------
+
/**
* Database version number
*
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index ca36ecd31..6f3b030a0 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -59,6 +59,7 @@ Release Date: Not Released
- Replaced the _error_message() and _error_number() methods with error(), that returns an array containing the last database error code and message.
- Improved version() implementation so that drivers that have a native function to get the version number don't have to be defined in the core DB_driver class.
- PostgreSQL driver now uses pg_version() to get the database version number, when possible.
+ - Added db_set_charset() support for PostgreSQL.
- Libraries
--
cgit v1.2.3-24-g4f1b
From 5fa729827d63774457ad34b57109a2f6ab20d20f Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Sat, 3 Mar 2012 04:13:20 +0200
Subject: Added _optimize_table() support for PostgreSQL
---
system/database/DB_driver.php | 2 +-
.../database/drivers/postgre/postgre_utility.php | 35 ++++++++--------------
user_guide_src/source/changelog.rst | 6 ++--
3 files changed, 17 insertions(+), 26 deletions(-)
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index b41a42051..15195b20a 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -651,7 +651,7 @@ class CI_DB_driver {
*/
public function is_write_type($sql)
{
- return (bool) preg_match('/^\s*"?(SET|INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD DATA|COPY|ALTER|RENAME|GRANT|REVOKE|LOCK|UNLOCK|OPTIMIZE)\s+/i', $sql);
+ return (bool) preg_match('/^\s*"?(SET|INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD DATA|COPY|ALTER|RENAME|GRANT|REVOKE|LOCK|UNLOCK|OPTIMIZE|REINDEX)\s+/i', $sql);
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/postgre/postgre_utility.php b/system/database/drivers/postgre/postgre_utility.php
index dffd8c549..c426b363b 100644
--- a/system/database/drivers/postgre/postgre_utility.php
+++ b/system/database/drivers/postgre/postgre_utility.php
@@ -1,13 +1,13 @@
-db->protect_identifiers($table);
}
// --------------------------------------------------------------------
@@ -68,13 +62,10 @@ class CI_DB_postgre_utility extends CI_DB_utility {
/**
* Repair table query
*
- * Are table repairs supported in Postgre?
- *
- * @access private
* @param string the table name
- * @return object
+ * @return bool
*/
- function _repair_table($table)
+ public function _repair_table($table)
{
return FALSE;
}
@@ -84,7 +75,6 @@ class CI_DB_postgre_utility extends CI_DB_utility {
/**
* Postgre Export
*
- * @access private
* @param array Preferences
* @return mixed
*/
@@ -95,6 +85,5 @@ class CI_DB_postgre_utility extends CI_DB_utility {
}
}
-
/* End of file postgre_utility.php */
-/* Location: ./system/database/drivers/postgre/postgre_utility.php */
\ No newline at end of file
+/* Location: ./system/database/drivers/postgre/postgre_utility.php */
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 6f3b030a0..cb33336a1 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -58,8 +58,10 @@ Release Date: Not Released
- Added an optional database name parameter to db_select().
- Replaced the _error_message() and _error_number() methods with error(), that returns an array containing the last database error code and message.
- Improved version() implementation so that drivers that have a native function to get the version number don't have to be defined in the core DB_driver class.
- - PostgreSQL driver now uses pg_version() to get the database version number, when possible.
- - Added db_set_charset() support for PostgreSQL.
+ - Improved support of the PostgreSQL driver, including:
+ - pg_version() is now used to get the database version number, when possible.
+ - Added db_set_charset() support.
+ - Added _optimize_table() support for the :doc:`Database Utility Class ` (rebuilds table indexes).
- Libraries
--
cgit v1.2.3-24-g4f1b
From a19beb0c580ac78c4b75548a046240a85f30cb29 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Sat, 3 Mar 2012 04:20:50 +0200
Subject: Replace usage of legacy alias pg_exec() in favor of pg_query() and
improve PostgreSQL driver trans_*() methods
---
system/database/drivers/postgre/postgre_driver.php | 38 ++++++----------------
1 file changed, 10 insertions(+), 28 deletions(-)
diff --git a/system/database/drivers/postgre/postgre_driver.php b/system/database/drivers/postgre/postgre_driver.php
index 8df90f6a4..df0f50da5 100644
--- a/system/database/drivers/postgre/postgre_driver.php
+++ b/system/database/drivers/postgre/postgre_driver.php
@@ -222,18 +222,12 @@ class CI_DB_postgre_driver extends CI_DB {
/**
* Begin Transaction
*
- * @access public
* @return bool
*/
- function trans_begin($test_mode = FALSE)
+ public function trans_begin($test_mode = FALSE)
{
- if ( ! $this->trans_enabled)
- {
- return TRUE;
- }
-
// When transactions are nested we only begin/commit/rollback the outermost ones
- if ($this->_trans_depth > 0)
+ if ( ! $this->trans_enabled OR $this->_trans_depth > 0)
{
return TRUE;
}
@@ -241,9 +235,9 @@ class CI_DB_postgre_driver extends CI_DB {
// Reset the transaction failure flag.
// If the $test_mode flag is set to TRUE transactions will be rolled back
// even if the queries produce a successful result.
- $this->_trans_failure = ($test_mode === TRUE) ? TRUE : FALSE;
+ $this->_trans_failure = ($test_mode === TRUE);
- return @pg_exec($this->conn_id, "begin");
+ return @pg_query($this->conn_id, 'BEGIN');
}
// --------------------------------------------------------------------
@@ -251,23 +245,17 @@ class CI_DB_postgre_driver extends CI_DB {
/**
* Commit Transaction
*
- * @access public
* @return bool
*/
- function trans_commit()
+ public function trans_commit()
{
- if ( ! $this->trans_enabled)
- {
- return TRUE;
- }
-
// When transactions are nested we only begin/commit/rollback the outermost ones
- if ($this->_trans_depth > 0)
+ if ( ! $this->trans_enabled OR $this->_trans_depth > 0)
{
return TRUE;
}
- return @pg_exec($this->conn_id, "commit");
+ return @pg_query($this->conn_id, 'COMMIT');
}
// --------------------------------------------------------------------
@@ -275,23 +263,17 @@ class CI_DB_postgre_driver extends CI_DB {
/**
* Rollback Transaction
*
- * @access public
* @return bool
*/
- function trans_rollback()
+ public function trans_rollback()
{
- if ( ! $this->trans_enabled)
- {
- return TRUE;
- }
-
// When transactions are nested we only begin/commit/rollback the outermost ones
- if ($this->_trans_depth > 0)
+ if ( ! $this->trans_enabled OR $this->_trans_depth > 0)
{
return TRUE;
}
- return @pg_exec($this->conn_id, "rollback");
+ return @pg_query($this->conn_id, 'ROLLBACK');
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 2f8473c031e8a1fa62a5556e013e293c297c41da Mon Sep 17 00:00:00 2001
From: Brenderous
Date: Fri, 2 Mar 2012 20:29:38 -0700
Subject: Just a grammar fix. Changed "...as the code these file contain will
be minimized" to "...as the code these files contain will be minimized".
---
user_guide_src/source/overview/at_a_glance.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/user_guide_src/source/overview/at_a_glance.rst b/user_guide_src/source/overview/at_a_glance.rst
index 31f0b4dd9..6dcfdbb14 100644
--- a/user_guide_src/source/overview/at_a_glance.rst
+++ b/user_guide_src/source/overview/at_a_glance.rst
@@ -41,7 +41,7 @@ CodeIgniter Uses M-V-C
CodeIgniter uses the Model-View-Controller approach, which allows great
separation between logic and presentation. This is particularly good for
projects in which designers are working with your template files, as the
-code these file contain will be minimized. We describe MVC in more
+code these files contain will be minimized. We describe MVC in more
detail on its own page.
CodeIgniter Generates Clean URLs
--
cgit v1.2.3-24-g4f1b
From 3722e50439fd88281f8730fd329b41812cd19963 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Sat, 3 Mar 2012 15:04:38 +0200
Subject: Fix MySQL/MySQLi field_data()
---
system/database/drivers/mysql/mysql_driver.php | 31 +++++++++++++++++++-----
system/database/drivers/mysqli/mysqli_driver.php | 31 +++++++++++++++++++-----
2 files changed, 50 insertions(+), 12 deletions(-)
diff --git a/system/database/drivers/mysql/mysql_driver.php b/system/database/drivers/mysql/mysql_driver.php
index 84f7791c7..7fd08a6ed 100644
--- a/system/database/drivers/mysql/mysql_driver.php
+++ b/system/database/drivers/mysql/mysql_driver.php
@@ -404,16 +404,35 @@ class CI_DB_mysql_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
+ * Returns an object with field data
*
* @param string the table name
- * @return string
+ * @return object
*/
- public function _field_data($table)
+ public function field_data($table = '')
{
- return 'DESCRIBE '.$table;
+ if ($table == '')
+ {
+ return ($this->db_debug) ? $this->display_error('db_field_param_missing') : FALSE;
+ }
+
+ $query = $this->query('DESCRIBE '.$this->_protect_identifiers($table, TRUE, NULL, FALSE));
+ $query = $query->result_object();
+
+ $retval = array();
+ for ($i = 0, $c = count($query); $i < $c; $i++)
+ {
+ preg_match('/([a-z]+)(\(\d+\))?/', $query[$i]->Type, $matches);
+
+ $retval[$i] = new stdClass();
+ $retval[$i]->name = $query[$i]->Field;
+ $retval[$i]->type = empty($matches[1]) ? NULL : $matches[1];
+ $retval[$i]->default = $query[$i]->Default;
+ $retval[$i]->max_length = empty($matches[2]) ? NULL : preg_replace('/[^\d]/', '', $matches[2]);
+ $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI');
+ }
+
+ return $retval;
}
// --------------------------------------------------------------------
diff --git a/system/database/drivers/mysqli/mysqli_driver.php b/system/database/drivers/mysqli/mysqli_driver.php
index 19353944d..25b6ceca1 100644
--- a/system/database/drivers/mysqli/mysqli_driver.php
+++ b/system/database/drivers/mysqli/mysqli_driver.php
@@ -405,16 +405,35 @@ class CI_DB_mysqli_driver extends CI_DB {
// --------------------------------------------------------------------
/**
- * Field data query
- *
- * Generates a platform-specific query so that the column data can be retrieved
+ * Returns an object with field data
*
* @param string the table name
- * @return string
+ * @return object
*/
- protected function _field_data($table)
+ public function field_data($table = '')
{
- return 'DESCRIBE '.$table;
+ if ($table == '')
+ {
+ return ($this->db_debug) ? $this->display_error('db_field_param_missing') : FALSE;
+ }
+
+ $query = $this->query('DESCRIBE '.$this->_protect_identifiers($table, TRUE, NULL, FALSE));
+ $query = $query->result_object();
+
+ $retval = array();
+ for ($i = 0, $c = count($query); $i < $c; $i++)
+ {
+ preg_match('/([a-z]+)(\(\d+\))?/', $query[$i]->Type, $matches);
+
+ $retval[$i] = new stdClass();
+ $retval[$i]->name = $query[$i]->Field;
+ $retval[$i]->type = empty($matches[1]) ? NULL : $matches[1];
+ $retval[$i]->default = $query[$i]->Default;
+ $retval[$i]->max_length = empty($matches[2]) ? NULL : preg_replace('/[^\d]/', '', $matches[2]);
+ $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI');
+ }
+
+ return $retval;
}
// --------------------------------------------------------------------
--
cgit v1.2.3-24-g4f1b
From 3edd88eee84886fc6ba3e1fc25beda3c424370bc Mon Sep 17 00:00:00 2001
From: tubalmartin
Date: Sat, 3 Mar 2012 22:10:34 +0100
Subject: An even better url_title helper. Tests: http://codepad.org/tuJgvkyN
Changelog entry added for 2.1.1
---
system/helpers/url_helper.php | 27 +++++++--------------------
user_guide/changelog.html | 5 +++++
2 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/system/helpers/url_helper.php b/system/helpers/url_helper.php
index 9f4b85248..cdb6dae9c 100644
--- a/system/helpers/url_helper.php
+++ b/system/helpers/url_helper.php
@@ -478,27 +478,14 @@ if ( ! function_exists('url_title'))
{
function url_title($str, $separator = 'dash', $lowercase = FALSE)
{
- if ($separator == 'dash')
- {
- $search = '_';
- $replace = '-';
- }
- else
- {
- $search = '-';
- $replace = '_';
- }
+ $replace = $separator == 'dash' ? '-' : '_';
$trans = array(
- '&\#\d+?;' => '',
- '&\S+?;' => '',
- '\s+' => $replace,
- '[^a-z0-9\-\._]' => '',
- $replace.'+' => $replace,
- $replace.'$' => $replace,
- '^'.$replace => $replace,
- '\.+$' => ''
- );
+ '&.+?;' => '',
+ '[^a-z0-9 _-]' => '',
+ '\s+' => $replace,
+ $replace.'+' => $replace
+ );
$str = strip_tags($str);
@@ -512,7 +499,7 @@ if ( ! function_exists('url_title'))
$str = strtolower($str);
}
- return trim(stripslashes($str));
+ return trim($str, $replace);
}
}
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index b87e61ba8..b85dc8d52 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -71,6 +71,11 @@ Change Log
--
cgit v1.2.3-24-g4f1b
From 010f1f4b315c8f5aef2e0b4c6571e4c4752f56c6 Mon Sep 17 00:00:00 2001
From: tubalmartin
Date: Sat, 3 Mar 2012 22:24:31 +0100
Subject: Fixed a bug - CI_Upload::_file_mime_type() could've failed if popen()
is used for the detection.
---
system/libraries/Upload.php | 2 +-
user_guide/changelog.html | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 91fbf66ca..b0490de30 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -1095,7 +1095,7 @@ class CI_Upload {
$proc = @popen($cmd, 'r');
if (is_resource($proc))
{
- $mime = @fread($test, 512);
+ $mime = @fread($proc, 512);
@pclose($proc);
if ($mime !== FALSE)
{
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index b87e61ba8..cf693685b 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -78,6 +78,7 @@ Change Log
Fixed a bug (#697) - A wrong array key was used in the Upload library to check for mime-types.
Fixed a bug - form_open() compared $action against site_url() instead of base_url()
Fixed a bug - CI_Upload::_file_mime_type() could've failed if mime_content_type() is used for the detection and returns FALSE.
+
Fixed a bug - CI_Upload::_file_mime_type() could've failed if popen() is used for the detection.
Fixed a bug (#538) - Windows paths were ignored when using the Image Manipulation Class to create a new file.
Fixed a bug - When database caching was enabled, $this->db->query() checked the cache before binding variables which resulted in cached queries never being found.
Fixed a bug (#697) - A wrong array key was used in the Upload library to check for mime-types.
Fixed a bug - form_open() compared $action against site_url() instead of base_url()
Fixed a bug - CI_Upload::_file_mime_type() could've failed if mime_content_type() is used for the detection and returns FALSE.
-
Fixed a bug - CI_Upload::_file_mime_type() could've failed if popen() is used for the detection.
Fixed a bug (#538) - Windows paths were ignored when using the Image Manipulation Class to create a new file.
Fixed a bug - When database caching was enabled, $this->db->query() checked the cache before binding variables which resulted in cached queries never being found.
';
protected $error_string = '';
protected $_safe_form_data = FALSE;
-
+ protected $validation_data = array();
+
/**
* Constructor
*/
@@ -84,8 +85,9 @@ class CI_Form_validation {
*/
public function set_rules($field, $label = '', $rules = '')
{
- // No reason to set rules if we have no POST data
- if (count($_POST) === 0)
+ // No reason to set rules if we have no POST data
+ // or a validation array has not been specified
+ if (count($_POST) === 0 && count($this->validation_data) === 0)
{
return $this;
}
@@ -159,13 +161,31 @@ class CI_Form_validation {
return $this;
}
+ // --------------------------------------------------------------------
+
+ /**
+ * By default, form validation uses the $_POST array to validate
+ *
+ * If an array is set through this method, then this array will
+ * be used instead of the $_POST array
+ *
+ * @param array $data
+ */
+ public function set_data($data = '')
+ {
+ if ( ! empty($data) && is_array($data))
+ {
+ $this->validation_data = $data;
+ }
+ }
+
// --------------------------------------------------------------------
/**
* Set Error Message
*
* Lets users set their own error messages on the fly. Note: The key
- * name has to match the function name that it corresponds to.
+ * name has to match the function name that it corresponds to.
*
* @param string
* @param string
@@ -300,10 +320,14 @@ class CI_Form_validation {
public function run($group = '')
{
// Do we even have any data to process? Mm?
- if (count($_POST) === 0)
+ $validation_array = ( ! empty($this->validation_data)) ? $this->validation_data : $_POST;
+ if (count($validation_array) === 0)
{
return FALSE;
}
+
+ // Clear any previous validation data
+ $this->_reset_validation();
// Does the _field_data array containing the validation rules exist?
// If not, we look to see if they were assigned via a config file
@@ -342,18 +366,18 @@ class CI_Form_validation {
// corresponding $_POST item and test for errors
foreach ($this->_field_data as $field => $row)
{
- // Fetch the data from the corresponding $_POST array and cache it in the _field_data array.
+ // Fetch the data from the corresponding $_POST or validation array and cache it in the _field_data array.
// Depending on whether the field name is an array or a string will determine where we get it from.
if ($row['is_array'] === TRUE)
{
- $this->_field_data[$field]['postdata'] = $this->_reduce_array($_POST, $row['keys']);
+ $this->_field_data[$field]['postdata'] = $this->_reduce_array($validation_array, $row['keys']);
}
else
{
- if (isset($_POST[$field]) AND $_POST[$field] != "")
+ if (isset($validation_array[$field]) AND $validation_array[$field] != "")
{
- $this->_field_data[$field]['postdata'] = $_POST[$field];
+ $this->_field_data[$field]['postdata'] = $validation_array[$field];
}
}
@@ -867,12 +891,13 @@ class CI_Form_validation {
*/
public function matches($str, $field)
{
- if ( ! isset($_POST[$field]))
+ $validation_array = ( ! empty($this->validation_data)) ? $this->validation_data : $_POST;
+ if ( ! isset($validation_array[$field]))
{
return FALSE;
}
- return ($str === $_POST[$field]);
+ return ($str === $validation_array[$field]);
}
// --------------------------------------------------------------------
@@ -1282,7 +1307,25 @@ class CI_Form_validation {
{
return str_replace(array(''), array('<?php', '<?PHP', '<?', '?>'), $str);
}
-
+
+ // --------------------------------------------------------------------
+
+ /**
+ * Reset validation vars
+ *
+ * Prevents subsequent validation routines from being affected by the
+ * results of any previous validation routine due to the CI singleton.
+ *
+ * @return void
+ */
+ protected function _reset_validation()
+ {
+ $this->_field_data = array();
+ $this->_config_rules = array();
+ $this->_error_array = array();
+ $this->_error_messages = array();
+ $this->error_string = '';
+ }
}
/* End of file Form_validation.php */
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 2ada9ee67..2158104f9 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -83,6 +83,7 @@ Release Date: Not Released
- Removed SHA1 function in the :doc:`Encryption Library `.
- Added $config['csrf_regeneration'] to the CSRF protection in the :doc:`Security library `, which makes token regeneration optional.
- Added function error_array() to return all error messages as an array in the Form_validation class.
+ - Added function set_data() to Form_validation library, which can be used in place of the default $_POST array.
- Changed the Session library to select only one row when using database sessions.
- Core
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index 09a192bb0..2fe315dba 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -579,7 +579,27 @@ must supply it as an array to the function. Example::
For more info please see the :ref:`using-arrays-as-field-names` section below.
-.. _saving-groups:
+Validating An Array (Other Than The $_POST Array)
+=================================================
+
+Sometimes you may want to validate an array that does not originate from $_POST data.
+
+In this case, you can specify the array to be validated::
+
+ $data = array(
+ 'username' => 'johndoe',
+ 'password' => 'mypassword',
+ 'passconf' => 'mypassword'
+ ));
+
+ $this->form_validation->set_data($data);
+
+Creating validation rules, running the validation and retrieving error messages works the same whether you are
+validating $_POST data or an array.
+
+For more info please see the :ref:`function-reference` section below.
+
+-.. _saving-groups:
************************************************
Saving Sets of Validation Rules to a Config File
@@ -930,6 +950,16 @@ $this->form_validation->set_message();
Permits you to set custom error messages. See :ref:`setting-error-messages`
+$this->form_validation->set_data();
+========================================
+
+ .. php:method:: set_data ($data = '')
+
+ :param array $data: The data to validate
+
+ Permits you to set an array for validation, instead of using the default
+ $_POST array.
+
$this->form_validation->error_array();
========================================
@@ -1019,5 +1049,4 @@ This function is identical to the **set_checkbox()** function above.
::
/>
- />
-
+ />
\ No newline at end of file
--
cgit v1.2.3-24-g4f1b
From 1a6971030718e2e92e6fc80750f7a14faf035257 Mon Sep 17 00:00:00 2001
From: tubalmartin
Date: Sun, 4 Mar 2012 16:01:11 +0100
Subject: Allow developers to use any string as a separator, not just dashes or
underscores. Backwards compatible when using 'dash' or 'underscore' as string
separator.
Tests: http://codepad.org/DWcxVH5r
---
system/helpers/url_helper.php | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/system/helpers/url_helper.php b/system/helpers/url_helper.php
index cdb6dae9c..f1e8c6ac6 100644
--- a/system/helpers/url_helper.php
+++ b/system/helpers/url_helper.php
@@ -466,25 +466,34 @@ if ( ! function_exists('prep_url'))
* Create URL Title
*
* Takes a "title" string as input and creates a
- * human-friendly URL string with either a dash
- * or an underscore as the word separator.
+ * human-friendly URL string with a "separator" string
+ * as the word separator.
*
* @access public
* @param string the string
- * @param string the separator: dash, or underscore
+ * @param string the separator
* @return string
*/
if ( ! function_exists('url_title'))
{
- function url_title($str, $separator = 'dash', $lowercase = FALSE)
+ function url_title($str, $separator = '-', $lowercase = FALSE)
{
- $replace = $separator == 'dash' ? '-' : '_';
+ if ($separator == 'dash')
+ {
+ $separator = '-';
+ }
+ else if ($separator == 'underscore')
+ {
+ $separator = '_';
+ }
+
+ $q_separator = preg_quote($separator);
$trans = array(
- '&.+?;' => '',
- '[^a-z0-9 _-]' => '',
- '\s+' => $replace,
- $replace.'+' => $replace
+ '&.+?;' => '',
+ '[^a-z0-9 _-]' => '',
+ '\s+' => $separator,
+ '('.$q_separator.')+' => $separator
);
$str = strip_tags($str);
@@ -499,7 +508,7 @@ if ( ! function_exists('url_title'))
$str = strtolower($str);
}
- return trim($str, $replace);
+ return trim($str, $separator);
}
}
--
cgit v1.2.3-24-g4f1b
From a67ddc61937d178231607f66f2af3ef729f208d4 Mon Sep 17 00:00:00 2001
From: tubalmartin
Date: Sun, 4 Mar 2012 16:18:04 +0100
Subject: User guide updated
---
user_guide/helpers/url_helper.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/user_guide/helpers/url_helper.html b/user_guide/helpers/url_helper.html
index 76ec32ab2..c23c5ac92 100644
--- a/user_guide/helpers/url_helper.html
+++ b/user_guide/helpers/url_helper.html
@@ -231,11 +231,11 @@ $url_title = url_title($title);
-
The second parameter determines the word delimiter. By default dashes are used. Options are: dash, or underscore:
+
The second parameter determines the word delimiter. By default dashes are used.
url_title() performance and output improved. You can now use any string as the word delimiter. Backwards compatible with 'dash' or 'underscore' as words delimiters.
--
cgit v1.2.3-24-g4f1b
From c8da4fe74d9cb0d456a18316fa9a0879d50e33f4 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Sun, 4 Mar 2012 19:20:33 +0200
Subject: Fix indentation for changes from pull #1121
---
system/libraries/Form_validation.php | 49 +++++++++++-----------
.../source/libraries/form_validation.rst | 18 ++++----
2 files changed, 33 insertions(+), 34 deletions(-)
diff --git a/system/libraries/Form_validation.php b/system/libraries/Form_validation.php
index b3efe82cf..1c0089d85 100644
--- a/system/libraries/Form_validation.php
+++ b/system/libraries/Form_validation.php
@@ -48,10 +48,7 @@ class CI_Form_validation {
protected $error_string = '';
protected $_safe_form_data = FALSE;
protected $validation_data = array();
-
- /**
- * Constructor
- */
+
public function __construct($rules = array())
{
$this->CI =& get_instance();
@@ -85,7 +82,7 @@ class CI_Form_validation {
*/
public function set_rules($field, $label = '', $rules = '')
{
- // No reason to set rules if we have no POST data
+ // No reason to set rules if we have no POST data
// or a validation array has not been specified
if (count($_POST) === 0 && count($this->validation_data) === 0)
{
@@ -162,23 +159,24 @@ class CI_Form_validation {
}
// --------------------------------------------------------------------
-
+
/**
* By default, form validation uses the $_POST array to validate
- *
+ *
* If an array is set through this method, then this array will
* be used instead of the $_POST array
- *
- * @param array $data
+ *
+ * @param array $data
+ * @return void
*/
public function set_data($data = '')
{
if ( ! empty($data) && is_array($data))
{
- $this->validation_data = $data;
+ $this->validation_data = $data;
}
}
-
+
// --------------------------------------------------------------------
/**
@@ -325,7 +323,7 @@ class CI_Form_validation {
{
return FALSE;
}
-
+
// Clear any previous validation data
$this->_reset_validation();
@@ -891,7 +889,7 @@ class CI_Form_validation {
*/
public function matches($str, $field)
{
- $validation_array = ( ! empty($this->validation_data)) ? $this->validation_data : $_POST;
+ $validation_array = ( ! empty($this->validation_data)) ? $this->validation_data : $_POST;
if ( ! isset($validation_array[$field]))
{
return FALSE;
@@ -1307,25 +1305,26 @@ class CI_Form_validation {
{
return str_replace(array(''), array('<?php', '<?PHP', '<?', '?>'), $str);
}
-
+
// --------------------------------------------------------------------
-
- /**
- * Reset validation vars
- *
- * Prevents subsequent validation routines from being affected by the
+
+ /**
+ * Reset validation vars
+ *
+ * Prevents subsequent validation routines from being affected by the
* results of any previous validation routine due to the CI singleton.
- *
- * @return void
- */
- protected function _reset_validation()
- {
+ *
+ * @return void
+ */
+ protected function _reset_validation()
+ {
$this->_field_data = array();
$this->_config_rules = array();
$this->_error_array = array();
$this->_error_messages = array();
$this->error_string = '';
- }
+ }
+
}
/* End of file Form_validation.php */
diff --git a/user_guide_src/source/libraries/form_validation.rst b/user_guide_src/source/libraries/form_validation.rst
index 2fe315dba..0d8218374 100644
--- a/user_guide_src/source/libraries/form_validation.rst
+++ b/user_guide_src/source/libraries/form_validation.rst
@@ -579,20 +579,20 @@ must supply it as an array to the function. Example::
For more info please see the :ref:`using-arrays-as-field-names` section below.
-Validating An Array (Other Than The $_POST Array)
-=================================================
+Validating an Array (other than $_POST)
+=======================================
Sometimes you may want to validate an array that does not originate from $_POST data.
In this case, you can specify the array to be validated::
- $data = array(
- 'username' => 'johndoe',
- 'password' => 'mypassword',
- 'passconf' => 'mypassword'
- ));
+ $data = array(
+ 'username' => 'johndoe',
+ 'password' => 'mypassword',
+ 'passconf' => 'mypassword'
+ );
- $this->form_validation->set_data($data);
+ $this->form_validation->set_data($data);
Creating validation rules, running the validation and retrieving error messages works the same whether you are
validating $_POST data or an array.
@@ -1049,4 +1049,4 @@ This function is identical to the **set_checkbox()** function above.
::
/>
- />
\ No newline at end of file
+ />
--
cgit v1.2.3-24-g4f1b
From cc5af53346397846f2035dc2bf6a2c2f9b0cd4ab Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Mon, 5 Mar 2012 14:02:15 +0200
Subject: Fix issue #1125
---
system/database/drivers/odbc/odbc_result.php | 36 +++++++++++++++++++++++++++-
1 file changed, 35 insertions(+), 1 deletion(-)
diff --git a/system/database/drivers/odbc/odbc_result.php b/system/database/drivers/odbc/odbc_result.php
index 572e110ca..2d5b50a8d 100644
--- a/system/database/drivers/odbc/odbc_result.php
+++ b/system/database/drivers/odbc/odbc_result.php
@@ -245,8 +245,42 @@ class CI_DB_odbc_result extends CI_DB_result {
return $rs_assoc;
}
-}
+ // --------------------------------------------------------------------
+
+ /**
+ * Query result. Array version.
+ *
+ * @return array
+ */
+ public function result_array()
+ {
+ if (count($this->result_array) > 0)
+ {
+ return $this->result_array;
+ }
+ elseif (($c = count($this->result_object)) > 0)
+ {
+ for ($i = 0; $i < $c; $i++)
+ {
+ $this->result_array[$i] = (array) $this->result_object[$i];
+ }
+ }
+ elseif ($this->result_id === FALSE)
+ {
+ return array();
+ }
+ else
+ {
+ while ($row = $this->_fetch_assoc())
+ {
+ $this->result_array[] = $row;
+ }
+ }
+ return $this->result_array;
+ }
+
+}
/* End of file odbc_result.php */
/* Location: ./system/database/drivers/odbc/odbc_result.php */
--
cgit v1.2.3-24-g4f1b
From 8af76666474c42b45518c08bec16b4f8d700dd3c Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Mon, 5 Mar 2012 14:33:41 +0200
Subject: Partially fix issue #306
---
system/database/drivers/odbc/odbc_driver.php | 7 +++----
user_guide_src/source/changelog.rst | 1 +
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/system/database/drivers/odbc/odbc_driver.php b/system/database/drivers/odbc/odbc_driver.php
index 779b0c62f..a6e08cf2f 100644
--- a/system/database/drivers/odbc/odbc_driver.php
+++ b/system/database/drivers/odbc/odbc_driver.php
@@ -287,12 +287,11 @@ class CI_DB_odbc_driver extends CI_DB {
/**
* Insert ID
*
- * @access public
- * @return integer
+ * @return bool
*/
- function insert_id()
+ public function insert_id()
{
- return @odbc_insert_id($this->conn_id);
+ return ($this->db->db_debug) ? $this->db->display_error('db_unsuported_feature') : FALSE;
}
// --------------------------------------------------------------------
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 81be64b4d..0de85a46b 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -137,6 +137,7 @@ Bug fixes for 3.0
- Fixed a bug in Oracle's :doc:`Database Forge Class ` method _create_table() where it failed with AUTO_INCREMENT as it's not supported.
- Fixed a bug (#1080) - When using the SMTP protocol, the :doc:`Email Library ` send() method was returning TRUE even if the connection/authentication against the server failed.
- Fixed a bug (#499) - a CSRF cookie was created even with CSRF protection being disabled.
+- Fixed a bug (#306) - ODBC's insert_id() method was calling non-existent function odbc_insert_id(), which resulted in a fatal error.
Version 2.1.1
=============
--
cgit v1.2.3-24-g4f1b
From 57bdeb61bf199d1ae3ceaede4e9a9af8290ce715 Mon Sep 17 00:00:00 2001
From: Andrey Andreev
Date: Mon, 5 Mar 2012 15:59:16 +0200
Subject: Removed oci8-specific stuff from DB_driver.php and added a
constructor to DB_result to handle initialization
---
system/database/DB_driver.php | 22 ++--------------------
system/database/DB_result.php | 6 ++++++
system/database/drivers/oci8/oci8_result.php | 15 ++++++++++++---
user_guide_src/source/changelog.rst | 2 ++
4 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index e403efb9f..a61450d4c 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -77,12 +77,6 @@ class CI_DB_driver {
var $_protect_identifiers = TRUE;
var $_reserved_identifiers = array('*'); // Identifiers that should NOT be escaped
- // These are use with Oracle
- var $stmt_id;
- var $curs_id;
- var $limit_used;
-
-
/**
* Constructor. Accepts one parameter containing the database
* connection settings.
@@ -396,21 +390,9 @@ class CI_DB_driver {
}
// Load and instantiate the result driver
+ $driver = $this->load_rdriver();
+ $RES = new $driver($this);
- $driver = $this->load_rdriver();
- $RES = new $driver();
- $RES->conn_id = $this->conn_id;
- $RES->result_id = $this->result_id;
-
- if ($this->dbdriver == 'oci8')
- {
- $RES->stmt_id = $this->stmt_id;
- $RES->curs_id = NULL;
- $RES->limit_used = $this->limit_used;
- $this->stmt_id = FALSE;
- }
-
- // oci8 vars must be set before calling this
$RES->num_rows = $RES->num_rows();
// Is query caching enabled? If so, we'll serialize the
diff --git a/system/database/DB_result.php b/system/database/DB_result.php
index 730443222..61aa56121 100644
--- a/system/database/DB_result.php
+++ b/system/database/DB_result.php
@@ -47,6 +47,12 @@ class CI_DB_result {
public $num_rows = 0;
public $row_data = NULL;
+ public function __construct(&$driver_object)
+ {
+ $this->conn_id = $driver_object->conn_id;
+ $this->result_id = $driver_object->result_id;
+ }
+
/**
* Query result. Acts as a wrapper function for the following functions.
*
diff --git a/system/database/drivers/oci8/oci8_result.php b/system/database/drivers/oci8/oci8_result.php
index 0f69fa9ef..383b9f1a0 100644
--- a/system/database/drivers/oci8/oci8_result.php
+++ b/system/database/drivers/oci8/oci8_result.php
@@ -38,9 +38,18 @@
*/
class CI_DB_oci8_result extends CI_DB_result {
- var $stmt_id;
- var $curs_id;
- var $limit_used;
+ public $stmt_id;
+ public $curs_id;
+ public $limit_used;
+
+ public function __construct(&$driver_object)
+ {
+ parent::__construct($driver_object);
+ $this->stmt_id = $driver_object->stmt_id;
+ $this->curs_id = $driver_object->curs_id;
+ $this->limit_used = $driver_object->limit_used;
+ $driver_object->stmt_id = FALSE;
+ }
/**
* Number of rows in the result set.
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 0de85a46b..533746065 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -62,6 +62,7 @@ Release Date: Not Released
- pg_version() is now used to get the database version number, when possible.
- Added db_set_charset() support.
- Added _optimize_table() support for the :doc:`Database Utility Class ` (rebuilds table indexes).
+ - Added a constructor to the DB_result class and moved all driver-specific properties and logic out of the base DB_driver class to allow better abstraction.
- Libraries
@@ -138,6 +139,7 @@ Bug fixes for 3.0
- Fixed a bug (#1080) - When using the SMTP protocol, the :doc:`Email Library ` send() method was returning TRUE even if the connection/authentication against the server failed.
- Fixed a bug (#499) - a CSRF cookie was created even with CSRF protection being disabled.
- Fixed a bug (#306) - ODBC's insert_id() method was calling non-existent function odbc_insert_id(), which resulted in a fatal error.
+- Fixed a bug in Oracle's DB_result class where the cursor id passed to it was always NULL.
Version 2.1.1
=============
--
cgit v1.2.3-24-g4f1b