Version 1
[yaffs-website] / vendor / gabordemooij / redbean / RedBeanPHP / Adapter / DBAdapter.php
diff --git a/vendor/gabordemooij/redbean/RedBeanPHP/Adapter/DBAdapter.php b/vendor/gabordemooij/redbean/RedBeanPHP/Adapter/DBAdapter.php
new file mode 100755 (executable)
index 0000000..876971c
--- /dev/null
@@ -0,0 +1,240 @@
+<?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();
+       }
+}