+++ /dev/null
-<?php
-
-namespace RedBeanPHP\Adapter;
-
-use RedBeanPHP\Observable as Observable;
-use RedBeanPHP\Adapter as Adapter;
-use RedBeanPHP\Driver as Driver;
-
-/**
- * DBAdapter (Database Adapter)
- *
- * An adapter class to connect various database systems to RedBean
- * Database Adapter Class. The task of the database adapter class is to
- * communicate with the database driver. You can use all sorts of database
- * drivers with RedBeanPHP. The default database drivers that ships with
- * the RedBeanPHP library is the RPDO driver ( which uses the PHP Data Objects
- * Architecture aka PDO ).
- *
- * @file RedBeanPHP/Adapter/DBAdapter.php
- * @author Gabor de Mooij and the RedBeanPHP Community.
- * @license BSD/GPLv2
- *
- * @copyright
- * (c) copyright G.J.G.T. (Gabor) de Mooij and the RedBeanPHP community.
- * This source file is subject to the BSD/GPLv2 License that is bundled
- * with this source code in the file license.txt.
- */
-class DBAdapter extends Observable implements Adapter
-{
- /**
- * @var Driver
- */
- private $db = NULL;
-
- /**
- * @var string
- */
- private $sql = '';
-
- /**
- * Constructor.
- *
- * Creates an instance of the RedBean Adapter Class.
- * This class provides an interface for RedBean to work
- * with ADO compatible DB instances.
- *
- * @param Driver $database ADO Compatible DB Instance
- */
- public function __construct( $database )
- {
- $this->db = $database;
- }
-
- /**
- * Returns a string containing the most recent SQL query
- * processed by the database adapter, thus conforming to the
- * interface:
- *
- * @see Adapter::getSQL
- *
- * Methods like get(), getRow() and exec() cause this SQL cache
- * to get filled. If no SQL query has been processed yet this function
- * will return an empty string.
- *
- * @return string
- */
- public function getSQL()
- {
- return $this->sql;
- }
-
- /**
- * @see Adapter::exec
- */
- public function exec( $sql, $bindings = array(), $noevent = FALSE )
- {
- if ( !$noevent ) {
- $this->sql = $sql;
- $this->signal( 'sql_exec', $this );
- }
-
- return $this->db->Execute( $sql, $bindings );
- }
-
- /**
- * @see Adapter::get
- */
- public function get( $sql, $bindings = array() )
- {
- $this->sql = $sql;
- $this->signal( 'sql_exec', $this );
-
- return $this->db->GetAll( $sql, $bindings );
- }
-
- /**
- * @see Adapter::getRow
- */
- public function getRow( $sql, $bindings = array() )
- {
- $this->sql = $sql;
- $this->signal( 'sql_exec', $this );
-
- return $this->db->GetRow( $sql, $bindings );
- }
-
- /**
- * @see Adapter::getCol
- */
- public function getCol( $sql, $bindings = array() )
- {
- $this->sql = $sql;
- $this->signal( 'sql_exec', $this );
-
- return $this->db->GetCol( $sql, $bindings );
- }
-
- /**
- * @see Adapter::getAssoc
- */
- public function getAssoc( $sql, $bindings = array() )
- {
- $this->sql = $sql;
-
- $this->signal( 'sql_exec', $this );
-
- $rows = $this->db->GetAll( $sql, $bindings );
-
- $assoc = array();
- if ( !$rows ) {
- return $assoc;
- }
-
- foreach ( $rows as $row ) {
- if ( empty( $row ) ) continue;
-
- if ( count( $row ) > 2 ) {
- $key = array_shift( $row );
- $value = $row;
- } elseif ( count( $row ) > 1 ) {
- $key = array_shift( $row );
- $value = array_shift( $row );
- } else {
- $key = array_shift( $row );
- $value = $key;
- }
-
- $assoc[$key] = $value;
- }
-
- return $assoc;
- }
-
- /**
- * @see Adapter::getAssocRow
- */
- public function getAssocRow($sql, $bindings = array())
- {
- $this->sql = $sql;
- $this->signal( 'sql_exec', $this );
-
- return $this->db->GetAssocRow( $sql, $bindings );
- }
-
- /**
- * @see Adapter::getCell
- */
- public function getCell( $sql, $bindings = array(), $noSignal = NULL )
- {
- $this->sql = $sql;
-
- if ( !$noSignal ) $this->signal( 'sql_exec', $this );
-
- return $this->db->GetOne( $sql, $bindings );
- }
-
- /**
- * @see Adapter::getCursor
- */
- public function getCursor( $sql, $bindings = array() )
- {
- return $this->db->GetCursor( $sql, $bindings );
- }
-
- /**
- * @see Adapter::getInsertID
- */
- public function getInsertID()
- {
- return $this->db->getInsertID();
- }
-
- /**
- * @see Adapter::getAffectedRows
- */
- public function getAffectedRows()
- {
- return $this->db->Affected_Rows();
- }
-
- /**
- * @see Adapter::getDatabase
- */
- public function getDatabase()
- {
- return $this->db;
- }
-
- /**
- * @see Adapter::startTransaction
- */
- public function startTransaction()
- {
- $this->db->StartTrans();
- }
-
- /**
- * @see Adapter::commit
- */
- public function commit()
- {
- $this->db->CommitTrans();
- }
-
- /**
- * @see Adapter::rollback
- */
- public function rollback()
- {
- $this->db->FailTrans();
- }
-
- /**
- * @see Adapter::close.
- */
- public function close()
- {
- $this->db->close();
- }
-}