summaryrefslogtreecommitdiff
path: root/modules/gallery/libraries/MY_Database.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/libraries/MY_Database.php')
-rw-r--r--modules/gallery/libraries/MY_Database.php55
1 files changed, 22 insertions, 33 deletions
diff --git a/modules/gallery/libraries/MY_Database.php b/modules/gallery/libraries/MY_Database.php
index c56f16e8..61f23fb0 100644
--- a/modules/gallery/libraries/MY_Database.php
+++ b/modules/gallery/libraries/MY_Database.php
@@ -17,32 +17,21 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
*/
-class Database extends Database_Core {
+abstract class Database extends Database_Core {
protected $_table_names;
- public function open_paren() {
- $this->where[] = "(";
- return $this;
- }
-
- public function close_paren() {
- // Search backwards for the last opening paren and resolve it
- $i = count($this->where) - 1;
- $this->where[$i] .= ")";
- while (--$i >= 0) {
- if ($this->where[$i] == "(") {
- // Remove the paren from the where clauses, and add it to the right of the operator of the
- // next where clause. If removing the paren makes the next where clause the first element
- // in the where list, then the operator shouldn't be there. It's there because we
- // calculate whether or not we need an operator based on the number of where clauses, and
- // the open paren seems like a where clause even though it isn't.
- array_splice($this->where, $i, 1);
- $this->where[$i] = preg_replace("/^(AND|OR) /", $i ? "\\1 (" : "(", $this->where[$i]);
- return $this;
- }
+ /**
+ * Kohana 2.4 introduces a new connection parameter. If it's not specified, make sure that we
+ * define it here to avoid an error later on.
+ *
+ * @todo: add an upgrade path to modify var/database.php so that we can avoid doing this at
+ * runtime.
+ */
+ protected function __construct(array $config) {
+ if (!isset($config["connection"]["params"])) {
+ $config["connection"]["params"] = null;
}
-
- throw new Kohana_Database_Exception('database.missing_open_paren');
+ parent::__construct($config);
}
/**
@@ -74,19 +63,19 @@ class Database extends Database_Core {
if (!isset($this->_table_names)) {
// This should only run once on the first query
- $this->_table_names =array();
- $len = strlen($prefix);
+ $this->_table_names = array();
foreach($this->list_tables() as $table_name) {
- if ($len > 0) {
- $naked_name = strpos($table_name, $prefix) !== 0 ?
- $table_name : substr($table_name, $len);
- } else {
- $naked_name = $table_name;
- }
- $this->_table_names["{{$naked_name}}"] = $table_name;
+ $this->_table_names["{{$table_name}}"] = $prefix . $table_name;
}
}
- return empty($this->_table_names) ? $sql : strtr($sql, $this->_table_names);
+ return strtr($sql, $this->_table_names);
+ }
+
+ /**
+ * This is used by the unit test code to switch the active database connection.
+ */
+ static function set_default_instance($db) {
+ self::$instances["default"] = $db;
}
} \ No newline at end of file