mirror of
https://gitlab.com/hashborgir/d2tools.git
synced 2025-10-14 00:44:23 -05:00
Begin Refactor
This commit is contained in:
293
vendor/gabordemooij/redbean/RedBeanPHP/Adapter/DBAdapter.php
vendored
Normal file
293
vendor/gabordemooij/redbean/RedBeanPHP/Adapter/DBAdapter.php
vendored
Normal file
@@ -0,0 +1,293 @@
|
||||
<?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.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* <code>
|
||||
* $database = new RPDO( $dsn, $user, $pass );
|
||||
* $adapter = new DBAdapter( $database );
|
||||
* $writer = new PostgresWriter( $adapter );
|
||||
* $oodb = new OODB( $writer, FALSE );
|
||||
* $bean = $oodb->dispense( 'bean' );
|
||||
* $bean->name = 'coffeeBean';
|
||||
* $id = $oodb->store( $bean );
|
||||
* $bean = $oodb->load( 'bean', $id );
|
||||
* </code>
|
||||
*
|
||||
* The example above creates the 3 RedBeanPHP core objects:
|
||||
* the Adapter, the Query Writer and the OODB instance and
|
||||
* wires them together. The example also demonstrates some of
|
||||
* the methods that can be used with OODB, as you see, they
|
||||
* closely resemble their facade counterparts.
|
||||
*
|
||||
* The wiring process: create an RPDO instance using your database
|
||||
* connection parameters. Create a database adapter from the RPDO
|
||||
* object and pass that to the constructor of the writer. Next,
|
||||
* create an OODB instance from the writer. Now you have an OODB
|
||||
* object.
|
||||
*
|
||||
* @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 );
|
||||
|
||||
if ( !$rows ) return array();
|
||||
|
||||
$assoc = array();
|
||||
|
||||
foreach ( $rows as $row ) {
|
||||
if ( empty( $row ) ) continue;
|
||||
|
||||
$key = array_shift( $row );
|
||||
switch ( count( $row ) ) {
|
||||
case 0:
|
||||
$value = $key;
|
||||
break;
|
||||
case 1:
|
||||
$value = reset( $row );
|
||||
break;
|
||||
default:
|
||||
$value = $row;
|
||||
}
|
||||
|
||||
$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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets initialization code for connection.
|
||||
*
|
||||
* @param callable $code
|
||||
*/
|
||||
public function setInitCode($code) {
|
||||
$this->db->setInitCode($code);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Adapter::setOption
|
||||
*/
|
||||
public function setOption( $optionKey, $optionValue ) {
|
||||
if ( method_exists( $this->db, $optionKey ) ) {
|
||||
call_user_func( array( $this->db, $optionKey ), $optionValue );
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see Adapter::getDatabaseServerVersion
|
||||
*/
|
||||
public function getDatabaseServerVersion()
|
||||
{
|
||||
return $this->db->DatabaseServerVersion();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user