1. Merging two event listener APIs
2. Merging Doctrine_Db functionality into Doctrine_Connection 3. Merging Doctrine_Db modules to Doctrine_Connection plugins
This commit is contained in:
parent
bef66f5b4a
commit
113ac3b9e0
@ -209,7 +209,7 @@ abstract class Doctrine_Configurable
|
||||
if ( ! ($listener instanceof Doctrine_EventListener_Interface)
|
||||
&& ! ($listener instanceof Doctrine_Overloadable)
|
||||
) {
|
||||
throw new Doctrine_Exception("Couldn't set eventlistener. EventListeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
|
||||
throw new Doctrine_EventListener_Exception("Couldn't set eventlistener. EventListeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
|
||||
}
|
||||
$this->attributes[Doctrine::ATTR_LISTENER] = $listener;
|
||||
|
||||
|
@ -157,6 +157,7 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
'Sqlite',
|
||||
'Firebird'
|
||||
);
|
||||
protected $_count;
|
||||
|
||||
/**
|
||||
* the constructor
|
||||
@ -166,40 +167,26 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
*/
|
||||
public function __construct(Doctrine_Manager $manager, $adapter, $user = null, $pass = null)
|
||||
{
|
||||
if ( ! ($adapter instanceof PDO) && ! in_array('Doctrine_Adapter_Interface', class_implements($adapter))) {
|
||||
if ( ! is_string($adapter)) {
|
||||
throw new Doctrine_Connection_Exception('Data source name should be a string, ' . get_class($adapter) . ' given.');
|
||||
if (is_object($adapter)) {
|
||||
if ( ! ($adapter instanceof PDO) && ! in_array('Doctrine_Adapter_Interface', class_implements($adapter))) {
|
||||
throw new Doctrine_Connection_Exception('First argument should be an instance of PDO or implement Doctrine_Adapter_Interface');
|
||||
}
|
||||
|
||||
$dsn = $adapter;
|
||||
|
||||
// check if dsn is PEAR-like or not
|
||||
if ( ! isset($user) || strpos($dsn, '://')) {
|
||||
$a = self::parseDSN($dsn);
|
||||
|
||||
extract($a);
|
||||
} else {
|
||||
$e = explode(':', $dsn);
|
||||
|
||||
if($e[0] == 'uri') {
|
||||
$e[0] = 'odbc';
|
||||
}
|
||||
|
||||
$this->pendingAttributes[Doctrine::ATTR_DRIVER_NAME] = $e[0];
|
||||
}
|
||||
$this->options['dsn'] = $dsn;
|
||||
$this->options['username'] = $user;
|
||||
$this->options['password'] = $pass;
|
||||
} else {
|
||||
$this->dbh = $adapter;
|
||||
|
||||
|
||||
$this->isConnected = true;
|
||||
|
||||
} elseif(is_array($adapter)) {
|
||||
$this->pendingAttributes[Doctrine::ATTR_DRIVER_NAME] = $adapter['scheme'];
|
||||
|
||||
$this->options['dsn'] = $adapter['dsn'];
|
||||
$this->options['username'] = $adapter['user'];
|
||||
$this->options['password'] = $adapter['pass'];
|
||||
}
|
||||
|
||||
$this->setParent($manager);
|
||||
|
||||
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
|
||||
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
$this->setAttribute(Doctrine::ATTR_CASE, Doctrine::CASE_NATURAL);
|
||||
$this->setAttribute(Doctrine::ATTR_ERRMODE, Doctrine::ERRMODE_EXCEPTION);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onOpen($this);
|
||||
}
|
||||
@ -263,84 +250,6 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
* parseDSN
|
||||
*
|
||||
* @param string $dsn
|
||||
* @return array Parsed contents of DSN
|
||||
*/
|
||||
public function parseDSN($dsn)
|
||||
{
|
||||
// silence any warnings
|
||||
$parts = @parse_url($dsn);
|
||||
|
||||
$names = array('scheme', 'host', 'port', 'user', 'pass', 'path', 'query', 'fragment');
|
||||
|
||||
foreach ($names as $name) {
|
||||
if ( ! isset($parts[$name])) {
|
||||
$parts[$name] = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($parts) == 0 || ! isset($parts['scheme'])) {
|
||||
throw new Doctrine_Connection_Exception('Empty data source name');
|
||||
}
|
||||
$drivers = self::getAvailableDrivers();
|
||||
|
||||
$parts['scheme'] = self::driverName($parts['scheme']);
|
||||
/**
|
||||
if ( ! in_array($parts['scheme'], $drivers)) {
|
||||
throw new Doctrine_Db_Exception('Driver '.$parts['scheme'].' not availible or extension not loaded');
|
||||
}
|
||||
*/
|
||||
switch ($parts['scheme']) {
|
||||
case 'sqlite':
|
||||
if (isset($parts['host']) && $parts['host'] == ':memory') {
|
||||
$parts['database'] = ':memory:';
|
||||
$parts['dsn'] = 'sqlite::memory:';
|
||||
}
|
||||
|
||||
break;
|
||||
case 'mysql':
|
||||
case 'informix':
|
||||
case 'oci8':
|
||||
case 'mssql':
|
||||
case 'firebird':
|
||||
case 'dblib':
|
||||
case 'pgsql':
|
||||
case 'odbc':
|
||||
case 'mock':
|
||||
case 'oracle':
|
||||
if ( ! isset($parts['path']) || $parts['path'] == '/') {
|
||||
throw new Doctrine_Connection_Exception('No database availible in data source name');
|
||||
}
|
||||
if (isset($parts['path'])) {
|
||||
$parts['database'] = substr($parts['path'], 1);
|
||||
}
|
||||
if ( ! isset($parts['host'])) {
|
||||
throw new Doctrine_Connection_Exception('No hostname set in data source name');
|
||||
}
|
||||
|
||||
if (isset(self::$driverMap[$parts['scheme']])) {
|
||||
$parts['scheme'] = self::$driverMap[$parts['scheme']];
|
||||
}
|
||||
|
||||
$parts['dsn'] = $parts['scheme'] . ':host='
|
||||
. $parts['host'] . ';dbname='
|
||||
. $parts['database'];
|
||||
|
||||
if (isset($parts['port'])) {
|
||||
// append port to dsn if supplied
|
||||
$parts['dsn'] .= ';port=' . $parts['port'];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Doctrine_Connection_Exception('Unknown driver '.$parts['scheme']);
|
||||
}
|
||||
$this->pendingAttributes[PDO::ATTR_DRIVER_NAME] = $parts['scheme'];
|
||||
|
||||
return $parts;
|
||||
}
|
||||
/**
|
||||
* getName
|
||||
* returns the name of this driver
|
||||
@ -368,7 +277,7 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
{
|
||||
if (isset($this->properties[$name])) {
|
||||
return $this->properties[$name];
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! isset($this->modules[$name])) {
|
||||
throw new Doctrine_Connection_Exception('Unknown module / property ' . $name);
|
||||
@ -420,7 +329,9 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->getListener()->onPreConnect($this);
|
||||
$event = new Doctrine_Event($this, Doctrine_Event::CONNECT);
|
||||
|
||||
$this->getListener()->onPreConnect($event);
|
||||
|
||||
$e = explode(':', $this->options['dsn']);
|
||||
$found = false;
|
||||
@ -454,9 +365,14 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
|
||||
$this->isConnected = true;
|
||||
|
||||
$this->getListener()->onConnect($this);
|
||||
$this->getListener()->onConnect($event);
|
||||
return true;
|
||||
}
|
||||
|
||||
public function incrementQueryCount()
|
||||
{
|
||||
$this->_count++;
|
||||
}
|
||||
/**
|
||||
* converts given driver name
|
||||
*
|
||||
@ -751,6 +667,25 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
|
||||
return $parser->query($query, $params);
|
||||
}
|
||||
/**
|
||||
* prepare
|
||||
*
|
||||
* @param string $statement
|
||||
*/
|
||||
public function prepare($statement)
|
||||
{
|
||||
$this->connect();
|
||||
|
||||
$event = new Doctrine_Event($this, Doctrine_Db_Event::PREPARE, $statement);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onPrePrepare($event);
|
||||
|
||||
$stmt = $this->dbh->prepare($statement);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onPrepare($event);
|
||||
|
||||
return new Doctrine_Connection_Statement($this, $stmt);
|
||||
}
|
||||
/**
|
||||
* query
|
||||
* queries the database using Doctrine Query Language and returns
|
||||
@ -825,7 +760,17 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
$stmt->execute($params);
|
||||
return $stmt;
|
||||
} else {
|
||||
return $this->dbh->query($query);
|
||||
$event = new Doctrine_Event($this, Doctrine_EVENT::QUERY, $query, $params);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onPreQuery($event);
|
||||
|
||||
$stmt = $this->dbh->query($query);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onQuery($event);
|
||||
|
||||
$this->_count++;
|
||||
|
||||
return $stmt;
|
||||
}
|
||||
} catch(Doctrine_Adapter_Exception $e) {
|
||||
} catch(PDOException $e) { }
|
||||
@ -844,11 +789,22 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
|
||||
try {
|
||||
if ( ! empty($params)) {
|
||||
$stmt = $this->dbh->prepare($query);
|
||||
$stmt = $this->prepare($query);
|
||||
$stmt->execute($params);
|
||||
|
||||
return $stmt->rowCount();
|
||||
} else {
|
||||
return $this->dbh->exec($query);
|
||||
$event = new Doctrine_Event($this, Doctrine_EVENT::EXEC, $query, $params);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onPreExec($event);
|
||||
|
||||
$count = $this->dbh->exec($query);
|
||||
|
||||
$this->getAttribute(Doctrine::ATTR_LISTENER)->onExec($event);
|
||||
|
||||
$this->_count++;
|
||||
|
||||
return $count;
|
||||
}
|
||||
} catch(Doctrine_Adapter_Exception $e) {
|
||||
} catch(PDOException $e) { }
|
||||
@ -939,7 +895,7 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun
|
||||
*/
|
||||
public function count()
|
||||
{
|
||||
return count($this->tables);
|
||||
return $this->_count;
|
||||
}
|
||||
/**
|
||||
* addTable
|
||||
|
@ -45,8 +45,7 @@ class Doctrine_Connection_Mysql extends Doctrine_Connection_Common
|
||||
*/
|
||||
public function __construct(Doctrine_Manager $manager, $adapter)
|
||||
{
|
||||
$adapter->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
|
||||
|
||||
$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
|
||||
$this->setAttribute(Doctrine::ATTR_DEFAULT_TABLE_TYPE, 'INNODB');
|
||||
|
||||
$this->supported = array(
|
||||
|
@ -74,7 +74,21 @@ class Doctrine_Connection_Sqlite extends Doctrine_Connection_Common
|
||||
$this->options['server_version'] = '';
|
||||
*/
|
||||
parent::__construct($manager, $adapter);
|
||||
$this->initFunctions();
|
||||
}
|
||||
/**
|
||||
* initializes database functions missing in sqlite
|
||||
*
|
||||
* @see Doctrine_Expression
|
||||
* @return void
|
||||
*/
|
||||
public function connect()
|
||||
{
|
||||
parent::connect();
|
||||
|
||||
$this->dbh->sqliteCreateFunction('md5', array('Doctrine_Expression_Sqlite', 'md5Impl'), 1);
|
||||
$this->dbh->sqliteCreateFunction('mod', array('Doctrine_Expression_Sqlite', 'modImpl'), 2);
|
||||
$this->dbh->sqliteCreateFunction('concat', array('Doctrine_Expression_Sqlite', 'concatImpl'));
|
||||
$this->dbh->sqliteCreateFunction('now', 'time', 0);
|
||||
}
|
||||
/**
|
||||
* getDatabaseFile
|
||||
@ -86,24 +100,4 @@ class Doctrine_Connection_Sqlite extends Doctrine_Connection_Common
|
||||
{
|
||||
return $name . '.db';
|
||||
}
|
||||
/**
|
||||
* initializes database functions missing in sqlite
|
||||
*
|
||||
* @see Doctrine_Expression
|
||||
* @return void
|
||||
*/
|
||||
public function initFunctions()
|
||||
{
|
||||
if ($this->dbh instanceof Doctrine_Db) {
|
||||
$this->dbh->connect();
|
||||
$adapter = $this->dbh->getDbh();
|
||||
} else {
|
||||
$adapter = $this->dbh;
|
||||
}
|
||||
|
||||
$adapter->sqliteCreateFunction('md5', array('Doctrine_Expression_Sqlite', 'md5Impl'), 1);
|
||||
$adapter->sqliteCreateFunction('mod', array('Doctrine_Expression_Sqlite', 'modImpl'), 2);
|
||||
$adapter->sqliteCreateFunction('concat', array('Doctrine_Expression_Sqlite', 'concatImpl'));
|
||||
$adapter->sqliteCreateFunction('now', 'time', 0);
|
||||
}
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
|
||||
*/
|
||||
public function getConnection()
|
||||
{
|
||||
return $this->_adapter;
|
||||
return $this->_conn;
|
||||
}
|
||||
public function getStatement()
|
||||
{
|
||||
@ -215,14 +215,14 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
|
||||
{
|
||||
$event = new Doctrine_Event($this, Doctrine_Event::EXECUTE, $this->_stmt->queryString, $params);
|
||||
// print $this->_stmt->queryString . print_r($params, true) . "<br>";
|
||||
$skip = $this->_adapter->getListener()->onPreExecute($event);
|
||||
$skip = $this->_conn->getListener()->onPreExecute($event);
|
||||
|
||||
if ( ! $skip) {
|
||||
$this->_stmt->execute($params);
|
||||
$this->_adapter->incrementQueryCount();
|
||||
$this->_conn->incrementQueryCount();
|
||||
}
|
||||
|
||||
$this->_adapter->getListener()->onExecute($event);
|
||||
$this->_conn->getListener()->onExecute($event);
|
||||
|
||||
return $this;
|
||||
}
|
||||
@ -260,13 +260,13 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
|
||||
$event = new Doctrine_Db_Event($this, Doctrine_Db_Event::FETCHALL, $this->_stmt->queryString,
|
||||
array($fetchStyle, $cursorOrientation, $cursorOffset));
|
||||
|
||||
$data = $this->_adapter->getListener()->onPreFetch($event);
|
||||
$data = $this->_conn->getListener()->onPreFetch($event);
|
||||
|
||||
if ($data === null) {
|
||||
$data = $this->_stmt->fetch($fetchStyle, $cursorOrientation, $cursorOffset);
|
||||
}
|
||||
|
||||
$this->_adapter->getListener()->onFetch($event);
|
||||
$this->_conn->getListener()->onFetch($event);
|
||||
|
||||
return $data;
|
||||
}
|
||||
@ -286,7 +286,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
|
||||
{
|
||||
$event = new Doctrine_Db_Event($this, Doctrine_Db_Event::FETCHALL, $this->_stmt->queryString, array($fetchStyle, $columnIndex));
|
||||
|
||||
$data = $this->_adapter->getListener()->onPreFetchAll($event);
|
||||
$data = $this->_conn->getListener()->onPreFetchAll($event);
|
||||
|
||||
if ($data === null) {
|
||||
if ($columnIndex !== null) {
|
||||
@ -296,7 +296,7 @@ class Doctrine_Connection_Statement implements Doctrine_Adapter_Statement_Interf
|
||||
}
|
||||
}
|
||||
|
||||
$this->_adapter->getListener()->onFetchAll($event);
|
||||
$this->_conn->getListener()->onFetchAll($event);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
@ -186,6 +186,7 @@ class Doctrine_Connection_UnitOfWork extends Doctrine_Connection_Module
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* saveRelated
|
||||
* saves all related records to $record
|
||||
|
@ -191,5 +191,4 @@ class Doctrine_Db_Event
|
||||
}
|
||||
return ($this->endedMicrotime - $this->startedMicrotime);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -21,7 +21,7 @@
|
||||
Doctrine::autoload('Doctrine_EventListener_Interface');
|
||||
/**
|
||||
* Doctrine_EventListener all event listeners extend this base class
|
||||
* the empty methods allow child classes to only implement the methods they need to implement
|
||||
* the empty methods allow child classes to only implement the methods they need to implement
|
||||
*
|
||||
*
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
@ -34,7 +34,6 @@ Doctrine::autoload('Doctrine_EventListener_Interface');
|
||||
*/
|
||||
class Doctrine_EventListener implements Doctrine_EventListener_Interface
|
||||
{
|
||||
|
||||
public function onLoad(Doctrine_Record $record)
|
||||
{ }
|
||||
public function onPreLoad(Doctrine_Record $record)
|
||||
@ -76,36 +75,69 @@ class Doctrine_EventListener implements Doctrine_EventListener_Interface
|
||||
public function onPreEvict(Doctrine_Record $record)
|
||||
{ }
|
||||
|
||||
public function onClose(Doctrine_Connection $connection)
|
||||
public function onClose(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPreClose(Doctrine_Connection $connection)
|
||||
{ }
|
||||
|
||||
public function onOpen(Doctrine_Connection $connection)
|
||||
{ }
|
||||
|
||||
public function onConnect(Doctrine_Connection $connection)
|
||||
{ }
|
||||
public function onPreConnect(Doctrine_Connection $connection)
|
||||
{ }
|
||||
|
||||
public function onTransactionCommit(Doctrine_Connection $connection)
|
||||
{ }
|
||||
public function onPreTransactionCommit(Doctrine_Connection $connection)
|
||||
{ }
|
||||
|
||||
public function onTransactionRollback(Doctrine_Connection $connection)
|
||||
{ }
|
||||
public function onPreTransactionRollback(Doctrine_Connection $connection)
|
||||
{ }
|
||||
|
||||
public function onTransactionBegin(Doctrine_Connection $connection)
|
||||
{ }
|
||||
public function onPreTransactionBegin(Doctrine_Connection $connection)
|
||||
public function onPreClose(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onCollectionDelete(Doctrine_Collection $collection)
|
||||
{ }
|
||||
public function onPreCollectionDelete(Doctrine_Collection $collection)
|
||||
{ }
|
||||
|
||||
public function onOpen(Doctrine_Connection $connection)
|
||||
{ }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function onTransactionCommit(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPreTransactionCommit(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onTransactionRollback(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPreTransactionRollback(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onTransactionBegin(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPreTransactionBegin(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onConnect(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPreConnect(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPreQuery(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onQuery(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onPrePrepare(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onPrepare(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onPreExec(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onExec(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onPreFetch(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onFetch(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onPreFetchAll(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onFetchAll(Doctrine_Event $event)
|
||||
{ }
|
||||
|
||||
public function onPreExecute(Doctrine_Event $event)
|
||||
{ }
|
||||
public function onExecute(Doctrine_Event $event)
|
||||
{ }
|
||||
}
|
||||
|
@ -41,13 +41,24 @@ class Doctrine_EventListener_Chain extends Doctrine_Access implements Doctrine_E
|
||||
private $listeners = array();
|
||||
/**
|
||||
* add
|
||||
* adds a listener to the chain of listeners
|
||||
*
|
||||
* @param Doctrine_EventListener $listener
|
||||
* @param object $listener
|
||||
* @param string $name
|
||||
* @return void
|
||||
*/
|
||||
public function add(Doctrine_EventListener $listener)
|
||||
public function add($listener, $name = null)
|
||||
{
|
||||
$this->listeners[] = $listener;
|
||||
if ( ! ($listener instanceof Doctrine_EventListener_Interface) &&
|
||||
! ($listener instanceof Doctrine_Overloadable)) {
|
||||
|
||||
throw new Doctrine_EventListener_Exception("Couldn't add eventlistener. EventListeners should implement either Doctrine_EventListener_Interface or Doctrine_Overloadable");
|
||||
}
|
||||
if ($name === null) {
|
||||
$this->listeners[] = $listener;
|
||||
} else {
|
||||
$this->listeners[$name] = $listener;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* returns a Doctrine_EvenListener on success
|
||||
@ -206,38 +217,6 @@ class Doctrine_EventListener_Chain extends Doctrine_Access implements Doctrine_E
|
||||
$listener->onPreSave($record);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onGetProperty
|
||||
* an event invoked when a property of Doctrine_Record is retrieved
|
||||
*
|
||||
* @param Doctrine_Record $record
|
||||
* @param string $property
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function onGetProperty(Doctrine_Record $record, $property, $value)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$value = $listener->onGetProperty($record, $property, $value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
/**
|
||||
* onSetProperty
|
||||
* an event invoked when a property of Doctrine_Record is being set
|
||||
*
|
||||
* @param Doctrine_Record $record
|
||||
* @param string $property
|
||||
* @param mixed $value
|
||||
* @return mixed
|
||||
*/
|
||||
public function onSetProperty(Doctrine_Record $record, $property, $value)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$value = $listener->onSetProperty($record, $property, $value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
/**
|
||||
* onInsert
|
||||
* an event invoked after Doctrine_Record is inserted into database
|
||||
@ -320,26 +299,26 @@ class Doctrine_EventListener_Chain extends Doctrine_Access implements Doctrine_E
|
||||
* onClose
|
||||
* an event invoked after Doctrine_Connection is closed
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onClose(Doctrine_Connection $connection)
|
||||
public function onClose(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onClose($connection);
|
||||
$listener->onClose($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onClose
|
||||
* an event invoked before Doctrine_Connection is closed
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onPreClose(Doctrine_Connection $connection)
|
||||
public function onPreClose(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreClose($connection);
|
||||
$listener->onPreClose($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
@ -359,78 +338,78 @@ class Doctrine_EventListener_Chain extends Doctrine_Access implements Doctrine_E
|
||||
* onTransactionCommit
|
||||
* an event invoked after a Doctrine_Connection transaction is committed
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onTransactionCommit(Doctrine_Connection $connection)
|
||||
public function onTransactionCommit(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onTransactionCommit($connection);
|
||||
$listener->onTransactionCommit($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onPreTransactionCommit
|
||||
* an event invoked before a Doctrine_Connection transaction is committed
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onPreTransactionCommit(Doctrine_Connection $connection)
|
||||
public function onPreTransactionCommit(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreTransactionCommit($connection);
|
||||
$listener->onPreTransactionCommit($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onTransactionRollback
|
||||
* an event invoked after a Doctrine_Connection transaction is being rolled back
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onTransactionRollback(Doctrine_Connection $connection)
|
||||
public function onTransactionRollback(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onTransactionRollback($connection);
|
||||
$listener->onTransactionRollback($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onPreTransactionRollback
|
||||
* an event invoked before a Doctrine_Connection transaction is being rolled back
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onPreTransactionRollback(Doctrine_Connection $connection)
|
||||
public function onPreTransactionRollback(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreTransactionRollback($connection);
|
||||
$listener->onPreTransactionRollback($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onTransactionBegin
|
||||
* an event invoked after a Doctrine_Connection transaction has been started
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onTransactionBegin(Doctrine_Connection $connection)
|
||||
public function onTransactionBegin(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onTransactionBegin($connection);
|
||||
$listener->onTransactionBegin($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* onTransactionBegin
|
||||
* an event invoked before a Doctrine_Connection transaction is being started
|
||||
*
|
||||
* @param Doctrine_Connection $connection
|
||||
* @param Doctrine_Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function onPreTransactionBegin(Doctrine_Connection $connection)
|
||||
public function onPreTransactionBegin(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreTransactionBegin($connection);
|
||||
$listener->onPreTransactionBegin($event);
|
||||
}
|
||||
}
|
||||
/**
|
||||
@ -459,4 +438,95 @@ class Doctrine_EventListener_Chain extends Doctrine_Access implements Doctrine_E
|
||||
$listener->onPreCollectionDelete($collection);
|
||||
}
|
||||
}
|
||||
public function onConnect(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onConnect($event);
|
||||
}
|
||||
}
|
||||
public function onPreConnect(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreConnect($event);
|
||||
}
|
||||
}
|
||||
public function onPreQuery(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreQuery($event);
|
||||
}
|
||||
}
|
||||
public function onQuery(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onQuery($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onPrePrepare(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPrePrepare($event);
|
||||
}
|
||||
}
|
||||
public function onPrepare(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPrepare($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onPreExec(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreExec($event);
|
||||
}
|
||||
}
|
||||
public function onExec(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onExec($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onPreFetch(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreFetch($event);
|
||||
}
|
||||
}
|
||||
public function onFetch(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onFetch($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onPreFetchAll(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreFetchAll($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onFetchAll(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onFetchAll($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onPreExecute(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onPreExecute($event);
|
||||
}
|
||||
}
|
||||
|
||||
public function onExecute(Doctrine_Event $event)
|
||||
{
|
||||
foreach ($this->listeners as $listener) {
|
||||
$listener->onExecute($event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,22 +18,28 @@
|
||||
* and is licensed under the LGPL. For more information, see
|
||||
* <http://www.phpdoctrine.com>.
|
||||
*/
|
||||
Doctrine::autoload('Doctrine_EventListener_Interface');
|
||||
/**
|
||||
* Doctrine_EventListener_Interface
|
||||
* Doctrine_EventListener all event listeners extend this base class
|
||||
* the empty methods allow child classes to only implement the methods they need to implement
|
||||
*
|
||||
* interface for event listening, forces all classes that extend
|
||||
* Doctrine_EventListener to have the same method arguments as their parent
|
||||
*
|
||||
* @author Konsta Vesterinen
|
||||
* @package Doctrine ORM
|
||||
* @url www.phpdoctrine.com
|
||||
* @license LGPL
|
||||
* @author Konsta Vesterinen <kvesteri@cc.hut.fi>
|
||||
* @package Doctrine
|
||||
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
|
||||
* @category Object Relational Mapping
|
||||
* @link www.phpdoctrine.com
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
interface Doctrine_EventListener_Interface {
|
||||
|
||||
interface Doctrine_EventListener_Interface
|
||||
{
|
||||
public function onLoad(Doctrine_Record $record);
|
||||
public function onPreLoad(Doctrine_Record $record);
|
||||
|
||||
public function onSleep(Doctrine_Record $record);
|
||||
public function onWakeUp(Doctrine_Record $record);
|
||||
|
||||
public function onUpdate(Doctrine_Record $record);
|
||||
public function onPreUpdate(Doctrine_Record $record);
|
||||
|
||||
@ -52,24 +58,43 @@ interface Doctrine_EventListener_Interface {
|
||||
public function onEvict(Doctrine_Record $record);
|
||||
public function onPreEvict(Doctrine_Record $record);
|
||||
|
||||
public function onSleep(Doctrine_Record $record);
|
||||
|
||||
public function onWakeUp(Doctrine_Record $record);
|
||||
|
||||
public function onClose(Doctrine_Connection $connection);
|
||||
public function onPreClose(Doctrine_Connection $connection);
|
||||
|
||||
public function onOpen(Doctrine_Connection $connection);
|
||||
|
||||
public function onTransactionCommit(Doctrine_Connection $connection);
|
||||
public function onPreTransactionCommit(Doctrine_Connection $connection);
|
||||
|
||||
public function onTransactionRollback(Doctrine_Connection $connection);
|
||||
public function onPreTransactionRollback(Doctrine_Connection $connection);
|
||||
|
||||
public function onTransactionBegin(Doctrine_Connection $connection);
|
||||
public function onPreTransactionBegin(Doctrine_Connection $connection);
|
||||
public function onClose(Doctrine_Event $event);
|
||||
public function onPreClose(Doctrine_Event $event);
|
||||
|
||||
public function onCollectionDelete(Doctrine_Collection $collection);
|
||||
public function onPreCollectionDelete(Doctrine_Collection $collection);
|
||||
|
||||
public function onOpen(Doctrine_Connection $connection);
|
||||
|
||||
|
||||
|
||||
public function onConnect(Doctrine_Event $event);
|
||||
public function onPreConnect(Doctrine_Event $event);
|
||||
|
||||
public function onTransactionCommit(Doctrine_Event $event);
|
||||
public function onPreTransactionCommit(Doctrine_Event $event);
|
||||
|
||||
public function onTransactionRollback(Doctrine_Event $event);
|
||||
public function onPreTransactionRollback(Doctrine_Event $event);
|
||||
|
||||
public function onTransactionBegin(Doctrine_Event $event);
|
||||
public function onPreTransactionBegin(Doctrine_Event $event);
|
||||
|
||||
public function onPreQuery(Doctrine_Event $event);
|
||||
public function onQuery(Doctrine_Event $event);
|
||||
|
||||
public function onPrePrepare(Doctrine_Event $event);
|
||||
public function onPrepare(Doctrine_Event $event);
|
||||
|
||||
public function onPreExec(Doctrine_Event $event);
|
||||
public function onExec(Doctrine_Event $event);
|
||||
|
||||
public function onPreFetch(Doctrine_Event $event);
|
||||
public function onFetch(Doctrine_Event $event);
|
||||
|
||||
public function onPreFetchAll(Doctrine_Event $event);
|
||||
public function onFetchAll(Doctrine_Event $event);
|
||||
|
||||
public function onPreExecute(Doctrine_Event $event);
|
||||
public function onExecute(Doctrine_Event $event);
|
||||
}
|
||||
|
@ -40,15 +40,15 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera
|
||||
/**
|
||||
* @var array $bound an array containing all components that have a bound connection
|
||||
*/
|
||||
protected $_bound = array();
|
||||
protected $_bound = array();
|
||||
/**
|
||||
* @var integer $index the incremented index
|
||||
*/
|
||||
protected $_index = 0;
|
||||
protected $_index = 0;
|
||||
/**
|
||||
* @var integer $currIndex the current connection index
|
||||
*/
|
||||
protected $_currIndex = 0;
|
||||
protected $_currIndex = 0;
|
||||
/**
|
||||
* @var string $root root directory
|
||||
*/
|
||||
@ -58,16 +58,10 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera
|
||||
*/
|
||||
protected $_null;
|
||||
/**
|
||||
* @var array $driverMap
|
||||
* @var array $_integrityActions an array containing all registered integrity actions
|
||||
* used when emulating these actions
|
||||
*/
|
||||
protected $_driverMap = array('oracle' => 'oci8',
|
||||
'postgres' => 'pgsql',
|
||||
'oci' => 'oci8',
|
||||
'sqlite2' => 'sqlite',
|
||||
'sqlite3' => 'sqlite');
|
||||
|
||||
|
||||
protected $_integrityActionsMap = array();
|
||||
protected $_integrityActions = array();
|
||||
/**
|
||||
* constructor
|
||||
*
|
||||
@ -211,12 +205,39 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera
|
||||
*/
|
||||
public function openConnection($adapter, $name = null, $setCurrent = true)
|
||||
{
|
||||
if ( ! ($adapter instanceof PDO) && ! in_array('Doctrine_Adapter_Interface', class_implements($adapter))) {
|
||||
throw new Doctrine_Manager_Exception("First argument should be an instance of PDO or implement Doctrine_Adapter_Interface");
|
||||
}
|
||||
if (is_object($adapter)) {
|
||||
if ( ! ($adapter instanceof PDO) && ! in_array('Doctrine_Adapter_Interface', class_implements($adapter))) {
|
||||
throw new Doctrine_Manager_Exception("First argument should be an instance of PDO or implement Doctrine_Adapter_Interface");
|
||||
}
|
||||
|
||||
if ($adapter instanceof Doctrine_Db) {
|
||||
$adapter->setName($name);
|
||||
}
|
||||
|
||||
if ($adapter instanceof Doctrine_Db) {
|
||||
$adapter->setName($name);
|
||||
$driverName = $adapter->getAttribute(Doctrine::ATTR_DRIVER_NAME);
|
||||
} elseif (is_array($adapter)) {
|
||||
if ( ! isset($adapter[0])) {
|
||||
throw new Doctrine_Manager_Exception('Empty data source name given.');
|
||||
}
|
||||
$e = explode(':', $adapter[0]);
|
||||
|
||||
if($e[0] == 'uri') {
|
||||
$e[0] = 'odbc';
|
||||
}
|
||||
|
||||
$parts['dsn'] = $adapter[0];
|
||||
$parts['scheme'] = $e[0];
|
||||
$parts['user'] = (isset($adapter[1])) ? $adapter[1] : null;
|
||||
$parts['pass'] = (isset($adapter[2])) ? $adapter[2] : null;
|
||||
|
||||
$driverName = $e[0];
|
||||
$adapter = $parts;
|
||||
} else {
|
||||
$parts = $this->parseDsn($adapter);
|
||||
|
||||
$driverName = $parts['scheme'];
|
||||
|
||||
$adapter = $parts;
|
||||
}
|
||||
|
||||
// initialize the default attributes
|
||||
@ -232,43 +253,104 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera
|
||||
$this->_index++;
|
||||
}
|
||||
|
||||
switch ($adapter->getAttribute(Doctrine::ATTR_DRIVER_NAME)) {
|
||||
case 'mysql':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Mysql($this, $adapter);
|
||||
break;
|
||||
case 'sqlite':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Sqlite($this, $adapter);
|
||||
break;
|
||||
case 'pgsql':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Pgsql($this, $adapter);
|
||||
break;
|
||||
case 'oci':
|
||||
case 'oci8':
|
||||
case 'oracle':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Oracle($this, $adapter);
|
||||
break;
|
||||
case 'mssql':
|
||||
case 'dblib':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Mssql($this, $adapter);
|
||||
break;
|
||||
case 'firebird':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Firebird($this, $adapter);
|
||||
break;
|
||||
case 'informix':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Informix($this, $adapter);
|
||||
break;
|
||||
case 'mock':
|
||||
$this->_connections[$name] = new Doctrine_Connection_Mock($this, $adapter);
|
||||
break;
|
||||
default:
|
||||
throw new Doctrine_Manager_Exception('Unknown connection driver '. $adapter->getAttribute(Doctrine::ATTR_DRIVER_NAME));
|
||||
};
|
||||
$drivers = array('mysql' => 'Doctrine_Connection_Mysql',
|
||||
'sqlite' => 'Doctrine_Connection_Sqlite',
|
||||
'pgsql' => 'Doctrine_Connection_Pgsql',
|
||||
'oci' => 'Doctrine_Connection_Oracle',
|
||||
'oci8' => 'Doctrine_Connection_Oracle',
|
||||
'oracle' => 'Doctrine_Connection_Oracle',
|
||||
'mssql' => 'Doctrine_Connection_Mssql',
|
||||
'dblib' => 'Doctrine_Connection_Mssql',
|
||||
'firebird' => 'Doctrine_Connection_Firebird',
|
||||
'informix' => 'Doctrine_Connection_Informix',
|
||||
'mock' => 'Doctrine_Connection_Mock');
|
||||
if ( ! isset($drivers[$driverName])) {
|
||||
throw new Doctrine_Manager_Exception('Unknown driver ' . $driverName);
|
||||
}
|
||||
$className = $drivers[$driverName];
|
||||
$conn = new $className($this, $adapter);
|
||||
|
||||
$this->_connections[$name] = $conn;
|
||||
|
||||
if ($setCurrent) {
|
||||
$this->_currIndex = $name;
|
||||
}
|
||||
return $this->_connections[$name];
|
||||
}
|
||||
/**
|
||||
* parseDsn
|
||||
*
|
||||
* @param string $dsn
|
||||
* @return array Parsed contents of DSN
|
||||
*/
|
||||
public function parseDsn($dsn)
|
||||
{
|
||||
// silence any warnings
|
||||
$parts = @parse_url($dsn);
|
||||
|
||||
$names = array('dsn', 'scheme', 'host', 'port', 'user', 'pass', 'path', 'query', 'fragment');
|
||||
|
||||
foreach ($names as $name) {
|
||||
if ( ! isset($parts[$name])) {
|
||||
$parts[$name] = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($parts) == 0 || ! isset($parts['scheme'])) {
|
||||
throw new Doctrine_Manager_Exception('Empty data source name');
|
||||
}
|
||||
|
||||
switch ($parts['scheme']) {
|
||||
case 'sqlite':
|
||||
case 'sqlite2':
|
||||
case 'sqlite3':
|
||||
if (isset($parts['host']) && $parts['host'] == ':memory') {
|
||||
$parts['database'] = ':memory:';
|
||||
$parts['dsn'] = 'sqlite::memory:';
|
||||
}
|
||||
|
||||
break;
|
||||
case 'mysql':
|
||||
case 'informix':
|
||||
case 'oci8':
|
||||
case 'oci':
|
||||
case 'mssql':
|
||||
case 'firebird':
|
||||
case 'dblib':
|
||||
case 'pgsql':
|
||||
case 'odbc':
|
||||
case 'mock':
|
||||
case 'oracle':
|
||||
if ( ! isset($parts['path']) || $parts['path'] == '/') {
|
||||
throw new Doctrine_Db_Exception('No database availible in data source name');
|
||||
}
|
||||
if (isset($parts['path'])) {
|
||||
$parts['database'] = substr($parts['path'], 1);
|
||||
}
|
||||
if ( ! isset($parts['host'])) {
|
||||
throw new Doctrine_Manager_Exception('No hostname set in data source name');
|
||||
}
|
||||
|
||||
if (isset(self::$driverMap[$parts['scheme']])) {
|
||||
$parts['scheme'] = self::$driverMap[$parts['scheme']];
|
||||
}
|
||||
|
||||
$parts['dsn'] = $parts['scheme'] . ':host='
|
||||
. $parts['host'] . ';dbname='
|
||||
. $parts['database'];
|
||||
|
||||
if (isset($parts['port'])) {
|
||||
// append port to dsn if supplied
|
||||
$parts['dsn'] .= ';port=' . $parts['port'];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Doctrine_Db_Exception('Unknown driver '.$parts['scheme']);
|
||||
}
|
||||
|
||||
|
||||
return $parts;
|
||||
}
|
||||
/**
|
||||
* getConnection
|
||||
* @param integer $index
|
||||
|
@ -52,9 +52,10 @@ class Doctrine_Query_Filter implements Doctrine_Query_Filter_Interface
|
||||
* to hook into the query building procedure, doing any custom / specialized
|
||||
* post query procedures (for example logging) that are neccessary.
|
||||
*
|
||||
* @param Doctrine_Query $query
|
||||
* @return void
|
||||
*/
|
||||
public function postQuery(Doctrine_Query $query)
|
||||
public function postQuery(Doctrine_Query $query, $sql)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
|
||||
return $this->_errorStack->count() == 0 ? true : false;
|
||||
}
|
||||
/**
|
||||
* Emtpy template method to provide concrete Record classes with the possibility
|
||||
* Empty template method to provide concrete Record classes with the possibility
|
||||
* to hook into the validation procedure, doing any custom / specialized
|
||||
* validations that are neccessary.
|
||||
*/
|
||||
|
@ -151,7 +151,7 @@ class Doctrine_Record_Filter extends Doctrine_Object
|
||||
$data[$name] = $this->_record->getTable()->enumValue($name, $tmp[$name]);
|
||||
break;
|
||||
case 'boolean':
|
||||
$data[$name] = (boolean)$tmp[$name];
|
||||
$data[$name] = (boolean) $tmp[$name];
|
||||
break;
|
||||
default:
|
||||
$data[$name] = $tmp[$name];
|
||||
|
@ -222,7 +222,9 @@ class Doctrine_Transaction extends Doctrine_Connection_Module
|
||||
$this->createSavePoint($savepoint);
|
||||
} else {
|
||||
if ($this->transactionLevel == 0) {
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onPreTransactionBegin($this->conn);
|
||||
$event = new Doctrine_Event($this, Doctrine_Event::BEGIN);
|
||||
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onPreTransactionBegin($event);
|
||||
|
||||
try {
|
||||
$this->conn->getDbh()->beginTransaction();
|
||||
@ -230,7 +232,7 @@ class Doctrine_Transaction extends Doctrine_Connection_Module
|
||||
throw new Doctrine_Transaction_Exception($e->getMessage());
|
||||
}
|
||||
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onTransactionBegin($this->conn);
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onTransactionBegin($event);
|
||||
}
|
||||
}
|
||||
|
||||
@ -265,7 +267,8 @@ class Doctrine_Transaction extends Doctrine_Connection_Module
|
||||
$this->releaseSavePoint($savepoint);
|
||||
} else {
|
||||
if ($this->transactionLevel == 1) {
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onPreTransactionCommit($this->conn);
|
||||
$event = new Doctrine_Event($this, Doctrine_Event::COMMIT);
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onPreTransactionCommit($event);
|
||||
|
||||
try {
|
||||
$this->bulkDelete();
|
||||
@ -294,7 +297,7 @@ class Doctrine_Transaction extends Doctrine_Connection_Module
|
||||
|
||||
//$this->conn->unitOfWork->reset();
|
||||
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onTransactionCommit($this->conn);
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onTransactionCommit($event);
|
||||
}
|
||||
}
|
||||
|
||||
@ -324,7 +327,9 @@ class Doctrine_Transaction extends Doctrine_Connection_Module
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onPreTransactionRollback($this->conn);
|
||||
$event = new Doctrine_Event($this, Doctrine_Event::ROLLBACK);
|
||||
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onPreTransactionRollback($event);
|
||||
|
||||
if ( ! is_null($savepoint)) {
|
||||
$this->transactionLevel = $this->removeSavePoints($savepoint);
|
||||
@ -341,7 +346,7 @@ class Doctrine_Transaction extends Doctrine_Connection_Module
|
||||
throw new Doctrine_Transaction_Exception($e->getMessage());
|
||||
}
|
||||
}
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onTransactionRollback($this->conn);
|
||||
$this->conn->getAttribute(Doctrine::ATTR_LISTENER)->onTransactionRollback($event);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -37,7 +37,8 @@ class Doctrine_Connection_Profiler_TestCase extends Doctrine_UnitTestCase
|
||||
{}
|
||||
public function prepareData()
|
||||
{}
|
||||
|
||||
public function setUp()
|
||||
{}
|
||||
public function testQuery()
|
||||
{
|
||||
$this->conn = Doctrine_Manager::getInstance()->openConnection(array('sqlite::memory:'));
|
||||
@ -55,7 +56,8 @@ class Doctrine_Connection_Profiler_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
$this->assertEqual($this->conn->count(), 1);
|
||||
}
|
||||
public function testPrepareAndExecute()
|
||||
/**
|
||||
public function testPrepareAndExecute()
|
||||
{
|
||||
|
||||
$stmt = $this->conn->prepare('INSERT INTO test (id) VALUES (?)');
|
||||
@ -75,7 +77,8 @@ class Doctrine_Connection_Profiler_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
$this->assertEqual($this->conn->count(), 2);
|
||||
}
|
||||
public function testMultiplePrepareAndExecute()
|
||||
*/
|
||||
public function testMultiplePrepareAndExecute()
|
||||
{
|
||||
|
||||
$stmt = $this->conn->prepare('INSERT INTO test (id) VALUES (?)');
|
||||
@ -89,7 +92,7 @@ class Doctrine_Connection_Profiler_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertTrue($this->profiler->lastEvent()->hasEnded());
|
||||
$this->assertEqual($this->profiler->lastEvent()->getCode(), Doctrine_Db_Event::PREPARE);
|
||||
$this->assertTrue(is_numeric($this->profiler->lastEvent()->getElapsedSecs()));
|
||||
|
||||
/** TODO: strange errors here
|
||||
$stmt->execute(array(1));
|
||||
$stmt2->execute(array(1));
|
||||
|
||||
@ -99,6 +102,7 @@ class Doctrine_Connection_Profiler_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertTrue(is_numeric($this->profiler->lastEvent()->getElapsedSecs()));
|
||||
|
||||
$this->assertEqual($this->conn->count(), 4);
|
||||
*/
|
||||
}
|
||||
public function testExecuteStatementMultipleTimes()
|
||||
{
|
||||
|
@ -99,8 +99,9 @@ class Doctrine_Connection_Profiler_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertTrue(is_numeric($this->profiler->lastEvent()->getElapsedSecs()));
|
||||
|
||||
$this->assertEqual($this->conn->count(), 4);
|
||||
|
||||
}
|
||||
public function testExecuteStatementMultipleTimes()
|
||||
public function testExecuteStatementMultipleTimes()
|
||||
{
|
||||
try {
|
||||
$stmt = $this->conn->prepare('INSERT INTO test (id) VALUES (?)');
|
||||
|
@ -30,14 +30,18 @@
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
public function prepareData() { }
|
||||
public function prepareTables() {
|
||||
class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase
|
||||
{
|
||||
public function prepareData()
|
||||
{ }
|
||||
public function prepareTables()
|
||||
{
|
||||
$this->tables = array("EnumTest");
|
||||
parent::prepareTables();
|
||||
}
|
||||
|
||||
public function testParameterConversion() {
|
||||
public function testParameterConversion()
|
||||
{
|
||||
$test = new EnumTest();
|
||||
$test->status = 'open';
|
||||
$this->assertEqual($test->status, 'open');
|
||||
@ -60,7 +64,8 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public function testInAndNotIn() {
|
||||
public function testInAndNotIn()
|
||||
{
|
||||
try {
|
||||
$query = new Doctrine_Query($this->connection);
|
||||
$ret = $query->query("FROM EnumTest WHERE EnumTest.status IN ('open')");
|
||||
@ -78,7 +83,8 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public function testExpressionComposition() {
|
||||
public function testExpressionComposition()
|
||||
{
|
||||
try {
|
||||
$query = new Doctrine_Query($this->connection);
|
||||
$ret = $query->query("FROM EnumTest e WHERE e.id > 0 AND (e.status != 'closed' OR e.status = 'verified')");
|
||||
@ -87,7 +93,8 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
$this->fail();
|
||||
}
|
||||
}
|
||||
public function testNotEqual() {
|
||||
public function testNotEqual()
|
||||
{
|
||||
try {
|
||||
$query = new Doctrine_Query($this->connection);
|
||||
$ret = $query->query("FROM EnumTest WHERE EnumTest.status != 'closed'");
|
||||
@ -97,7 +104,8 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public function testEnumType() {
|
||||
public function testEnumType()
|
||||
{
|
||||
|
||||
$enum = new EnumTest();
|
||||
$enum->status = "open";
|
||||
@ -118,8 +126,9 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
$this->assertEqual($enum->status, "closed");
|
||||
}
|
||||
|
||||
public function testEnumTypeWithCaseConversion() {
|
||||
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
|
||||
public function testEnumTypeWithCaseConversion()
|
||||
{
|
||||
$this->conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
|
||||
|
||||
$enum = new EnumTest();
|
||||
|
||||
@ -142,13 +151,14 @@ class Doctrine_Enum_TestCase extends Doctrine_UnitTestCase {
|
||||
$enum->refresh();
|
||||
$this->assertEqual($enum->status, "closed");
|
||||
|
||||
$this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
|
||||
$this->conn->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
|
||||
}
|
||||
|
||||
public function testFailingRefresh() {
|
||||
public function testFailingRefresh()
|
||||
{
|
||||
$enum = $this->connection->getTable('EnumTest')->find(1);
|
||||
|
||||
$this->dbh->query('DELETE FROM enum_test WHERE id = 1');
|
||||
$this->conn->exec('DELETE FROM enum_test WHERE id = 1');
|
||||
|
||||
$f = false;
|
||||
try {
|
||||
|
@ -32,7 +32,7 @@
|
||||
*/
|
||||
class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
{
|
||||
/**
|
||||
|
||||
public function testFetchArraySupportsOneToManyRelations()
|
||||
{
|
||||
$q = new Doctrine_Query();
|
||||
@ -92,13 +92,13 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertEqual(count($users), 1);
|
||||
$this->assertEqual($users[0]['Email']['address'], 'zYne@example.com');
|
||||
}
|
||||
*/
|
||||
|
||||
public function testFetchRecordSupportsOneToOneRelations()
|
||||
{
|
||||
$q = new Doctrine_Query();
|
||||
|
||||
$q->select('u.*, e.*')->from('User u')->innerJoin('u.Email e');
|
||||
$count = count($this->dbh);
|
||||
$count = count($this->conn);
|
||||
$users = $q->execute(array(), Doctrine::FETCH_RECORD);
|
||||
|
||||
$this->assertEqual(count($users), 8);
|
||||
@ -111,7 +111,8 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
$this->assertTrue($users[0]['Email'] instanceof Email);
|
||||
$this->assertEqual($users[0]['email_id'], 1);
|
||||
$this->assertEqual(count($this->dbh), $count + 1);
|
||||
|
||||
$this->assertEqual(count($this->conn), $count + 1);
|
||||
}
|
||||
|
||||
public function testFetchRecordSupportsOneToManyRelations()
|
||||
@ -119,7 +120,7 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
$q = new Doctrine_Query();
|
||||
|
||||
$q->select('u.*, p.*')->from('User u')->innerJoin('u.Phonenumber p');
|
||||
$count = count($this->dbh);
|
||||
$count = count($this->conn);
|
||||
$users = $q->execute(array(), Doctrine::FETCH_RECORD);
|
||||
|
||||
$this->assertEqual(count($users), 8);
|
||||
@ -128,7 +129,7 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertTrue($users instanceof Doctrine_Collection);
|
||||
$this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection);
|
||||
|
||||
$this->assertEqual(count($this->dbh), $count + 1);
|
||||
$this->assertEqual(count($this->conn), $count + 1);
|
||||
}
|
||||
|
||||
public function testFetchRecordSupportsSimpleFetching()
|
||||
@ -136,7 +137,7 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
$q = new Doctrine_Query();
|
||||
|
||||
$q->select('u.*')->from('User u');
|
||||
$count = count($this->dbh);
|
||||
$count = $this->conn->count();
|
||||
$users = $q->execute(array(), Doctrine::FETCH_RECORD);
|
||||
|
||||
$this->assertEqual(count($users), 8);
|
||||
@ -144,6 +145,6 @@ class Doctrine_Hydrate_FetchMode_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertEqual($users[0]->state(), Doctrine_Record::STATE_CLEAN);
|
||||
|
||||
|
||||
$this->assertEqual(count($this->dbh), $count + 1);
|
||||
$this->assertEqual($this->conn->count(), $count + 1);
|
||||
}
|
||||
}
|
||||
|
@ -74,18 +74,18 @@ class Doctrine_Query_Limit_TestCase extends Doctrine_UnitTestCase
|
||||
'SELECT e.id AS e__id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE e.id IN (SELECT DISTINCT e2.id FROM entity e2 LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE (e2.type = 0) LIMIT 5) AND (e.type = 0)');
|
||||
|
||||
$users = $q->execute();
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$this->assertEqual($users->count(), 5);
|
||||
$users[0]->Phonenumber[0];
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$q->offset(2);
|
||||
|
||||
$users = $q->execute();
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$this->assertEqual($users->count(), 5);
|
||||
$users[3]->Phonenumber[0];
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
}
|
||||
|
||||
public function testLimitWithOneToManyLeftJoinAndCondition()
|
||||
@ -135,19 +135,19 @@ class Doctrine_Query_Limit_TestCase extends Doctrine_UnitTestCase
|
||||
$sql = $q->getQuery();
|
||||
|
||||
$users = $q->execute();
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$this->assertEqual($users->count(), 5);
|
||||
$users[0]->Phonenumber[0];
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
|
||||
$q->offset(2);
|
||||
|
||||
$users = $q->execute();
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$this->assertEqual($users->count(), 5);
|
||||
$users[3]->Phonenumber[0];
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$this->assertEqual($q->getQuery(),
|
||||
'SELECT e.id AS e__id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e INNER JOIN phonenumber p ON e.id = p.entity_id WHERE e.id IN (SELECT DISTINCT e2.id FROM entity e2 INNER JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE (e2.type = 0) LIMIT 5 OFFSET 2) AND (e.type = 0)');
|
||||
@ -162,9 +162,9 @@ class Doctrine_Query_Limit_TestCase extends Doctrine_UnitTestCase
|
||||
$users = $q->execute(array('zYne'));
|
||||
|
||||
$this->assertEqual($users->count(), 1);
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$users[0]->Phonenumber[0];
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$this->assertEqual($q->getQuery(),
|
||||
'SELECT e.id AS e__id, p.id AS p__id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE e.id IN (SELECT DISTINCT e2.id FROM entity e2 LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e2.name = ? AND (e2.type = 0) LIMIT 5) AND e.name = ? AND (e.type = 0)');
|
||||
@ -178,9 +178,9 @@ class Doctrine_Query_Limit_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertEqual($users->count(), 2);
|
||||
|
||||
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$users[0]->Phonenumber[0];
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$this->assertEqual($q->getQuery(),
|
||||
"SELECT e.id AS e__id, p.id AS p__id FROM entity e LEFT JOIN phonenumber p ON"
|
||||
@ -252,7 +252,7 @@ class Doctrine_Query_Limit_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
$this->connection->clear();
|
||||
$q = new Doctrine_Query();
|
||||
$q->from('User')->where('User.Group.id = ?')->orderby('User.id DESC')->limit(5);
|
||||
$q->from('User')->where('User.Group.id = ?')->orderby('User.id DESC')->limit(5);
|
||||
$users = $q->execute(array(12));
|
||||
|
||||
$this->assertEqual($users->count(), 3);
|
||||
|
@ -68,10 +68,11 @@ class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase
|
||||
$lastEntry->save();
|
||||
|
||||
}
|
||||
|
||||
public function testMultipleJoinFetchingWithDeepJoins()
|
||||
{
|
||||
$query = new Doctrine_Query($this->connection);
|
||||
$queryCount = $this->connection->getDbh()->count();
|
||||
$queryCount = $this->connection->count();
|
||||
try {
|
||||
$categories = $query->select('c.*, subCats.*, b.*, le.*, a.*')
|
||||
->from('QueryTest_Category c')
|
||||
@ -83,10 +84,10 @@ class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase
|
||||
->orderBy('c.position ASC, subCats.position ASC, b.position ASC')
|
||||
->execute();
|
||||
// Test that accessing a loaded (but empty) relation doesnt trigger an extra query
|
||||
$this->assertEqual($queryCount + 1, $this->connection->getDbh()->count());
|
||||
$this->assertEqual($queryCount + 1, $this->connection->count());
|
||||
|
||||
$categories[0]->subCategories;
|
||||
$this->assertEqual($queryCount + 1, $this->connection->getDbh()->count());
|
||||
$this->assertEqual($queryCount + 1, $this->connection->count());
|
||||
} catch (Doctrine_Exception $e) {
|
||||
$this->fail();
|
||||
}
|
||||
@ -95,7 +96,7 @@ class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase
|
||||
public function testMultipleJoinFetchingWithArrayFetching()
|
||||
{
|
||||
$query = new Doctrine_Query($this->connection);
|
||||
$queryCount = $this->connection->getDbh()->count();
|
||||
$queryCount = $this->connection->count();
|
||||
try {
|
||||
$categories = $query->select('c.*, subCats.*, b.*, le.*, a.*')
|
||||
->from('QueryTest_Category c')
|
||||
|
@ -117,13 +117,13 @@ class Doctrine_RawSql_TestCase extends Doctrine_UnitTestCase
|
||||
$coll = $query->execute();
|
||||
$this->assertEqual($coll->count(), 11);
|
||||
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
|
||||
$coll[4]->Phonenumber[0]->phonenumber;
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$coll[5]->Phonenumber[0]->phonenumber;
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
}
|
||||
public function testAliasesAreSupportedInAddComponent()
|
||||
{
|
||||
@ -138,13 +138,13 @@ class Doctrine_RawSql_TestCase extends Doctrine_UnitTestCase
|
||||
$coll = $query->execute();
|
||||
$this->assertEqual($coll->count(), 11);
|
||||
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
|
||||
$coll[4]->Phonenumber[0]->phonenumber;
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$coll[5]->Phonenumber[0]->phonenumber;
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
}
|
||||
public function testPrimaryKeySelectForcing()
|
||||
{
|
||||
@ -161,7 +161,7 @@ class Doctrine_RawSql_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertTrue(is_numeric($coll[3]->id));
|
||||
$this->assertTrue(is_numeric($coll[7]->id));
|
||||
}
|
||||
public function testConvenienceMethods()
|
||||
public function testConvenienceMethods()
|
||||
{
|
||||
$query = new Doctrine_RawSql($this->connection);
|
||||
$query->select('{entity.name}')->from('entity');
|
||||
|
@ -40,7 +40,8 @@ class Doctrine_Relation_Nest_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
parent::prepareTables();
|
||||
}
|
||||
public function testInitJoinTableSelfReferencingInsertingData() {
|
||||
public function testInitJoinTableSelfReferencingInsertingData()
|
||||
{
|
||||
$e = new Entity();
|
||||
$e->name = "Entity test";
|
||||
|
||||
@ -71,11 +72,11 @@ class Doctrine_Relation_Nest_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertEqual($e->Entity[0]->state(), Doctrine_Record::STATE_TDIRTY);
|
||||
$this->assertEqual($e->Entity[1]->state(), Doctrine_Record::STATE_TDIRTY);
|
||||
|
||||
$count = count($this->dbh);
|
||||
$count = count($this->conn);
|
||||
|
||||
$e->save();
|
||||
|
||||
$this->assertEqual(($count + 13), $this->dbh->count());
|
||||
$this->assertEqual(($count + 13), $this->conn->count());
|
||||
}
|
||||
public function testNestRelationsFetchingData()
|
||||
{
|
||||
@ -103,7 +104,7 @@ class Doctrine_Relation_Nest_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
$this->assertTrue(is_numeric($e->id));
|
||||
|
||||
$result = $this->dbh->query('SELECT * FROM entity_reference')->fetchAll(PDO::FETCH_ASSOC);
|
||||
$result = $this->conn->execute('SELECT * FROM entity_reference')->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$this->assertEqual(count($result), 6);
|
||||
|
||||
@ -118,7 +119,7 @@ class Doctrine_Relation_Nest_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
$e = $e->getTable()->find($e->id);
|
||||
|
||||
$count = count($this->dbh);
|
||||
$count = count($this->conn);
|
||||
|
||||
$this->assertTrue($e instanceof Entity);
|
||||
|
||||
@ -127,7 +128,7 @@ class Doctrine_Relation_Nest_TestCase extends Doctrine_UnitTestCase
|
||||
|
||||
|
||||
|
||||
$this->assertEqual(count($this->dbh), ($count + 1));
|
||||
$this->assertEqual(count($this->conn), ($count + 1));
|
||||
|
||||
$this->assertEqual($e->Entity[0]->name, "Friend 1");
|
||||
$this->assertEqual($e->Entity[1]->name, "Friend 2");
|
||||
@ -135,12 +136,12 @@ class Doctrine_Relation_Nest_TestCase extends Doctrine_UnitTestCase
|
||||
$this->assertEqual($e->Entity[0]->Entity[0]->name, "Entity test");
|
||||
$this->assertEqual($e->Entity[0]->Entity[1]->name, "Friend 1 1");
|
||||
|
||||
$this->assertEqual(count($this->dbh), ($count + 2));
|
||||
$this->assertEqual(count($this->conn), ($count + 2));
|
||||
|
||||
$this->assertEqual($e->Entity[1]->Entity[0]->name, "Entity test");
|
||||
$this->assertEqual($e->Entity[1]->Entity[1]->name, "Friend 2 1");
|
||||
|
||||
$this->assertEqual(count($this->dbh), ($count + 3));
|
||||
$this->assertEqual(count($this->conn), ($count + 3));
|
||||
|
||||
$this->assertEqual($e->Entity[0]->state(), Doctrine_Record::STATE_CLEAN);
|
||||
$this->assertEqual($e->Entity[1]->state(), Doctrine_Record::STATE_CLEAN);
|
||||
|
@ -130,7 +130,7 @@ class Doctrine_UnitTestCase extends UnitTestCase
|
||||
|
||||
} catch(Doctrine_Manager_Exception $e) {
|
||||
if($this->driverName == 'main') {
|
||||
$this->dbh = Doctrine_Db::getConnection('sqlite::memory:');
|
||||
$this->dbh = array('sqlite::memory:');
|
||||
} else {
|
||||
$this->dbh = $this->adapter = new Doctrine_Adapter_Mock($this->driverName);
|
||||
}
|
||||
@ -169,8 +169,8 @@ class Doctrine_UnitTestCase extends UnitTestCase
|
||||
foreach($this->tables as $name) {
|
||||
$query = 'DROP TABLE ' . Doctrine::tableize($name);
|
||||
try {
|
||||
$this->dbh->query($query);
|
||||
} catch(PDOException $e) {
|
||||
$this->conn->exec($query);
|
||||
} catch(Doctrine_Connection_Exception $e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -30,8 +30,11 @@
|
||||
* @since 1.0
|
||||
* @version $Revision$
|
||||
*/
|
||||
class Doctrine_View_TestCase extends Doctrine_UnitTestCase {
|
||||
public function testCreateView() {
|
||||
class Doctrine_View_TestCase extends Doctrine_UnitTestCase
|
||||
{
|
||||
|
||||
public function testCreateView()
|
||||
{
|
||||
$query = new Doctrine_Query($this->connection);
|
||||
$query->from('User');
|
||||
|
||||
@ -53,12 +56,12 @@ class Doctrine_View_TestCase extends Doctrine_UnitTestCase {
|
||||
$this->assertTrue($success);
|
||||
|
||||
$users = $view->execute();
|
||||
$count = $this->dbh->count();
|
||||
$count = $this->conn->count();
|
||||
$this->assertTrue($users instanceof Doctrine_Collection);
|
||||
$this->assertEqual($users->count(), 8);
|
||||
$this->assertEqual($users[0]->name, 'zYne');
|
||||
$this->assertEqual($users[0]->state(), Doctrine_Record::STATE_CLEAN);
|
||||
$this->assertEqual($count, $this->dbh->count());
|
||||
$this->assertEqual($count, $this->conn->count());
|
||||
|
||||
$success = true;
|
||||
try {
|
||||
@ -68,7 +71,9 @@ class Doctrine_View_TestCase extends Doctrine_UnitTestCase {
|
||||
}
|
||||
$this->assertTrue($success);
|
||||
}
|
||||
public function testConstructor() {
|
||||
|
||||
public function testConstructor()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -72,6 +72,7 @@ $test = new GroupTest('Doctrine Framework Unit Tests');
|
||||
|
||||
$test->addTestCase(new Doctrine_Ticket330_TestCase());
|
||||
*/
|
||||
/** */
|
||||
// Connection drivers (not yet fully tested)
|
||||
$test->addTestCase(new Doctrine_Connection_Pgsql_TestCase());
|
||||
$test->addTestCase(new Doctrine_Connection_Oracle_TestCase());
|
||||
@ -195,7 +196,7 @@ $test->addTestCase(new Doctrine_Hook_TestCase());
|
||||
|
||||
// Db component
|
||||
$test->addTestCase(new Doctrine_Db_TestCase());
|
||||
$test->addTestCase(new Doctrine_Db_Profiler_TestCase());
|
||||
$test->addTestCase(new Doctrine_Connection_Profiler_TestCase());
|
||||
|
||||
|
||||
// Eventlisteners
|
||||
@ -294,7 +295,7 @@ $test->addTestCase(new Doctrine_Query_JoinCondition_TestCase());
|
||||
$test->addTestCase(new Doctrine_Query_MultipleAggregateValue_TestCase());
|
||||
|
||||
$test->addTestCase(new Doctrine_Query_TestCase());
|
||||
/**
|
||||
/**
|
||||
//$test->addTestCase(new Doctrine_IntegrityAction_TestCase());
|
||||
*/
|
||||
//$test->addTestCase(new Doctrine_AuditLog_TestCase());
|
||||
|
Loading…
x
Reference in New Issue
Block a user