From 689a4c6f455a19589490864434fed8817fbd9011 Mon Sep 17 00:00:00 2001 From: jwage Date: Tue, 22 Jan 2008 21:42:17 +0000 Subject: [PATCH] Connection refactoring to allow create/drop database functionality for sqlite. fixes #480 --- lib/Doctrine.php | 68 +------------------------ lib/Doctrine/Connection.php | 74 ++++++++++++++++++++++++++- lib/Doctrine/Connection/Sqlite.php | 39 ++++++++++++--- lib/Doctrine/Export.php | 21 ++++++-- lib/Doctrine/Export/Sqlite.php | 22 +++++++-- lib/Doctrine/Manager.php | 77 ++++++++++++++++++++++++++--- lib/Doctrine/Query/Tokenizer.php | 5 +- lib/Doctrine/Task/CreateDb.php | 4 +- lib/Doctrine/Task/DropDb.php | 4 +- models/TreeLeaf.php | 7 +-- tests/Export/SqliteTestCase.php | 39 ++++----------- tests/ManagerTestCase.php | 4 +- tests/Ticket/480TestCase.php | 4 +- tests/TreeStructureTestCase.php | 9 ++-- tests/run.php | 4 +- tools/sandbox/config.php.dist | 5 +- tools/sandbox/doctrine.php | 2 +- tools/sandbox/sandbox.db | Bin 6144 -> 0 bytes 18 files changed, 246 insertions(+), 142 deletions(-) delete mode 100755 tools/sandbox/sandbox.db diff --git a/lib/Doctrine.php b/lib/Doctrine.php index e0c5e0832..fadae96dd 100644 --- a/lib/Doctrine.php +++ b/lib/Doctrine.php @@ -894,47 +894,7 @@ final class Doctrine */ public static function createDatabases($specifiedConnections = array()) { - if ( ! is_array($specifiedConnections)) { - $specifiedConnections = (array) $specifiedConnections; - } - - $manager = Doctrine_Manager::getInstance(); - $connections = $manager->getConnections(); - - $results = array(); - - foreach ($connections as $name => $connection) { - if ( ! empty($specifiedConnections) && !in_array($name, $specifiedConnections)) { - continue; - } - - $info = $manager->parsePdoDsn($connection->getOption('dsn')); - $username = $connection->getOption('username'); - $password = $connection->getOption('password'); - - // Make connection without database specified so we can create it - $connect = $manager->openConnection(new PDO($info['scheme'] . ':host=' . $info['host'], $username, $password), 'tmp_connection', false); - - try { - // Create database - $connect->export->createDatabase($name); - - // Close the tmp connection with no database - $manager->closeConnection($connect); - - // Close original connection - $manager->closeConnection($connection); - - // Reopen original connection with newly created database - $manager->openConnection(new PDO($info['dsn'], $username, $password), $name, true); - - $results[$name] = true; - } catch (Exception $e) { - $results[$name] = false; - } - } - - return $results; + return Doctrine_Manager::getInstance()->createDatabases($specifiedConnections); } /** @@ -947,31 +907,7 @@ final class Doctrine */ public static function dropDatabases($specifiedConnections = array()) { - if ( ! is_array($specifiedConnections)) { - $specifiedConnections = (array) $specifiedConnections; - } - - $manager = Doctrine_Manager::getInstance(); - - $connections = $manager->getConnections(); - - $results = array(); - - foreach ($connections as $name => $connection) { - if ( ! empty($specifiedConnections) && !in_array($name, $specifiedConnections)) { - continue; - } - - try { - $connection->export->dropDatabase($connection->getDatabaseName()); - - $results[$name] = true; - } catch (Exception $e) { - $results[$name] = false; - } - } - - return $results; + return Doctrine_Manager::getInstance()->dropDatabases($specifiedConnections); } /** diff --git a/lib/Doctrine/Connection.php b/lib/Doctrine/Connection.php index 8053901d9..36bdf9e53 100644 --- a/lib/Doctrine/Connection.php +++ b/lib/Doctrine/Connection.php @@ -75,6 +75,15 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun * @var array An array of mapper objects currently maintained by this connection. */ protected $_mappers = array(); + + /** + * $_name + * + * Name of the connection + * + * @var string $_name + */ + protected $_name; /** * @var string $driverName the name of this connection driver @@ -305,6 +314,16 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun * @return string the name of this driver */ public function getName() + { + return $this->_name; + } + + public function setName($name) + { + $this->_name = $name; + } + + public function getDriverName() { return $this->driverName; } @@ -340,7 +359,7 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun $this->modules[$name] = new Doctrine_Formatter($this); break; default: - $class = 'Doctrine_' . ucwords($name) . '_' . $this->getName(); + $class = 'Doctrine_' . ucwords($name) . '_' . $this->getDriverName(); $this->modules[$name] = new $class($this); } } @@ -1380,6 +1399,59 @@ abstract class Doctrine_Connection extends Doctrine_Configurable implements Coun $this->transaction->rollback($savepoint); } + /** + * createDatabase + * + * @return void + */ + public function createDatabase() + { + $manager = $this->getManager(); + + $info = $manager->parsePdoDsn($this->getOption('dsn')); + $username = $this->getOption('username'); + $password = $this->getOption('password'); + + // Make connection without database specified so we can create it + $connect = $manager->openConnection(new PDO($info['scheme'] . ':host=' . $info['host'], $username, $password), 'tmp_connection', false); + + try { + // Create database + $connect->export->createDatabase($info['dbname']); + + // Close the tmp connection with no database + $manager->closeConnection($connect); + + // Close original connection + $manager->closeConnection($this); + + // Reopen original connection with newly created database + $manager->openConnection(new PDO($info['dsn'], $username, $password), $this->getName(), true); + + return 'Successfully created database for connection "' . $this->getName() . '" named "' . $info['dbname'] . '"'; + } catch (Exception $e) { + return $e; + } + } + + /** + * dropDatabase + * + * @return void + */ + public function dropDatabase() + { + try { + $info = $this->getManager()->parsePdoDsn($this->getOption('dsn')); + + $this->export->dropDatabase($info['dbname']); + + return 'Successfully dropped database for connection "' . $this->getName() . '" named "' . $info['dbname'] . '"'; + } catch (Exception $e) { + return $e; + } + } + /** * returns a string representation of this object * @return string diff --git a/lib/Doctrine/Connection/Sqlite.php b/lib/Doctrine/Connection/Sqlite.php index 56955abfb..d3e3423b1 100644 --- a/lib/Doctrine/Connection/Sqlite.php +++ b/lib/Doctrine/Connection/Sqlite.php @@ -96,13 +96,40 @@ class Doctrine_Connection_Sqlite extends Doctrine_Connection_Common } /** - * getDatabaseFile + * createDatabase * - * @param string $name the name of the database - * @return string + * @return void */ - public function getDatabaseFile($name) + public function createDatabase() { - return $name . '.db'; + try { + $manager = $this->getManager(); + + $info = $manager->parseDsn($this->getOption('dsn')); + + $this->export->createDatabase($info['database']); + + return 'Successfully created database for connection "' . $this->getName() . '" at path "' . $info['database'] . '"'; + } catch (Exception $e) { + return $e; + } } -} + + /** + * dropDatabase + * + * @return void + */ + public function dropDatabase() + { + try { + $info = $this->getManager()->parseDsn($this->getOption('dsn')); + + $this->export->dropDatabase($info['database']); + + return 'Successfully dropped database for connection "' . $this->getName() . '" at path "' . $info['database'] . '"'; + } catch (Exception $e) { + return $e; + } + } +} \ No newline at end of file diff --git a/lib/Doctrine/Export.php b/lib/Doctrine/Export.php index 772c415ed..e8100d392 100644 --- a/lib/Doctrine/Export.php +++ b/lib/Doctrine/Export.php @@ -1056,6 +1056,10 @@ class Doctrine_Export extends Doctrine_Connection_Module /** * exportClasses + * + * FIXME: This method is a big huge hack. The sql needs to be executed in the correct order. I have some stupid logic to + * make sure they are in the right order. + * * method for exporting Doctrine_Record classes to a schema * * @throws Doctrine_Connection_Exception if some error other than Doctrine::ERR_ALREADY_EXISTS @@ -1073,7 +1077,8 @@ class Doctrine_Export extends Doctrine_Connection_Module if ( ! isset($connections[$connectionName])) { $connections[$connectionName] = array(); - $connections[$connectionName]['creates'] = array(); + $connections[$connectionName]['create_tables'] = array(); + $connections[$connectionName]['create_sequences'] = array(); $connections[$connectionName]['alters'] = array(); } @@ -1081,9 +1086,15 @@ class Doctrine_Export extends Doctrine_Connection_Module // Build array of all the creates // We need these to happen first foreach ($sql as $key => $query) { - if (strstr($query, 'CREATE')) { - $connections[$connectionName]['creates'][] = $query; - // Unset the create from sql so we can have an array of everything else but creates + if (strstr($query, 'CREATE TABLE')) { + $connections[$connectionName]['create_tables'][] = $query; + + unset($sql[$key]); + } + + if (strstr($query, 'CREATE SEQUENCE')) { + $connections[$connectionName]['create_sequences'][] = $query; + unset($sql[$key]); } } @@ -1094,7 +1105,7 @@ class Doctrine_Export extends Doctrine_Connection_Module // Loop over all the sql again to merge the creates and alters in to the same array, but so that the alters are at the bottom $build = array(); foreach ($connections as $connectionName => $sql) { - $build[$connectionName] = array_merge($sql['creates'], $sql['alters']); + $build[$connectionName] = array_merge($sql['create_tables'], $sql['create_sequences'], $sql['alters']); } foreach ($build as $connectionName => $sql) { diff --git a/lib/Doctrine/Export/Sqlite.php b/lib/Doctrine/Export/Sqlite.php index 624c421d6..b1d210e26 100644 --- a/lib/Doctrine/Export/Sqlite.php +++ b/lib/Doctrine/Export/Sqlite.php @@ -34,25 +34,41 @@ Doctrine::autoload('Doctrine_Export'); class Doctrine_Export_Sqlite extends Doctrine_Export { /** + * dropDatabase + * * drop an existing database * - * @param string $name name of the database that should be dropped + * @param string $databaseFile Path of the database that should be dropped * @throws Doctrine_Export_Exception if the database file does not exist * @throws Doctrine_Export_Exception if something failed during the removal of the database file * @return void */ - public function dropDatabase($name) + public function dropDatabase($databaseFile) { - $databaseFile = $this->conn->getDatabaseFile($name); if ( ! @file_exists($databaseFile)) { throw new Doctrine_Export_Exception('database does not exist'); } + $result = @unlink($databaseFile); + if ( ! $result) { throw new Doctrine_Export_Exception('could not remove the database file'); } } + /** + * createDatabase + * + * Create sqlite database file + * + * @param string $databaseFile Path of the database that should be dropped + * @return void + */ + public function createDatabase($databaseFile) + { + return new PDO('sqlite:' . $databaseFile); + } + /** * Get the stucture of a field into an array * diff --git a/lib/Doctrine/Manager.php b/lib/Doctrine/Manager.php index f2c315fe2..28cf857df 100644 --- a/lib/Doctrine/Manager.php +++ b/lib/Doctrine/Manager.php @@ -312,6 +312,7 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera $className = $drivers[$driverName]; $conn = new $className($this, $adapter); + $conn->setName($name); $this->_connections[$name] = $conn; @@ -345,10 +346,16 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera $e = explode(';', $e[1]); foreach ($e as $string) { - list($key, $value) = explode('=', $string); - $parts[$key] = $value; + if ($string) { + $e2 = explode('=', $string); + + if (isset($e2[0]) && isset($e2[1])) { + list($key, $value) = $e2; + $parts[$key] = $value; + } + } } - + return $parts; } @@ -360,9 +367,10 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera */ public function parseDsn($dsn) { - //fix linux sqlite dsn so that it will parse correctly - $dsn = str_replace("///", "/", $dsn); - + // fix sqlite dsn so that it will parse correctly + $dsn = str_replace("////", "/", $dsn); + $dsn = str_replace("///c:/", "//c:/", $dsn); + // silence any warnings $parts = @parse_url($dsn); @@ -451,7 +459,6 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera throw new Doctrine_Manager_Exception('Unknown driver '.$parts['scheme']); } - return $parts; } @@ -695,6 +702,60 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera return $this->_connections[$i]; } + /** + * createDatabases + * + * Creates databases for connections + * + * @param string $specifiedConnections Array of connections you wish to create the database for + * @return void + */ + public function createDatabases($specifiedConnections = array()) + { + if ( ! is_array($specifiedConnections)) { + $specifiedConnections = (array) $specifiedConnections; + } + + $results = array(); + + foreach ($this as $name => $connection) { + if ( ! empty($specifiedConnections) && !in_array($name, $specifiedConnections)) { + continue; + } + + $results[$name] = $connection->createDatabase(); + } + + return $results; + } + + /** + * dropDatabases + * + * Drops databases for connections + * + * @param string $specifiedConnections Array of connections you wish to drop the database for + * @return void + */ + public function dropDatabases($specifiedConnections = array()) + { + if ( ! is_array($specifiedConnections)) { + $specifiedConnections = (array) $specifiedConnections; + } + + $results = array(); + + foreach ($this as $name => $connection) { + if ( ! empty($specifiedConnections) && !in_array($name, $specifiedConnections)) { + continue; + } + + $results[$name] = $connection->dropDatabase(); + } + + return $results; + } + /** * __toString * returns a string representation of this object @@ -709,4 +770,4 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera $r[] = ""; return implode("\n",$r); } -} +} \ No newline at end of file diff --git a/lib/Doctrine/Query/Tokenizer.php b/lib/Doctrine/Query/Tokenizer.php index 21423d530..17c07762f 100644 --- a/lib/Doctrine/Query/Tokenizer.php +++ b/lib/Doctrine/Query/Tokenizer.php @@ -377,7 +377,10 @@ class Doctrine_Query_Tokenizer } } } - $term[$i - 1] = array($term[$i - 1], ''); + + if (isset($term[$i - 1])) { + $term[$i - 1] = array($term[$i - 1], ''); + } return $term; } diff --git a/lib/Doctrine/Task/CreateDb.php b/lib/Doctrine/Task/CreateDb.php index a19e6fb0c..9836a5047 100644 --- a/lib/Doctrine/Task/CreateDb.php +++ b/lib/Doctrine/Task/CreateDb.php @@ -39,8 +39,8 @@ class Doctrine_Task_CreateDb extends Doctrine_Task { $results = Doctrine::createDatabases(); - foreach ($results as $dbName => $bool) { - $msg = $bool ? 'Successfully created database named: "' . $dbName . '"':'Could not create database named: "' .$dbName . '"'; + foreach ($results as $name => $result) { + $msg = $result instanceof Exception ? 'Could not create database for connection: "' .$name . '." Failed with exception: ' . $result->getMessage():$result; $this->notify($msg); } diff --git a/lib/Doctrine/Task/DropDb.php b/lib/Doctrine/Task/DropDb.php index 49fbdeb00..bc00809c5 100644 --- a/lib/Doctrine/Task/DropDb.php +++ b/lib/Doctrine/Task/DropDb.php @@ -48,8 +48,8 @@ class Doctrine_Task_DropDb extends Doctrine_Task $results = Doctrine::dropDatabases(); - foreach ($results as $dbName => $bool) { - $msg = $bool ? 'Successfully dropped database named: "' . $dbName . '"':'Could not drop database named: "' .$dbName . '"'; + foreach ($results as $name => $result) { + $msg = $result instanceof Exception ? 'Could not drop database for connection: "' .$name . '." Failed with exception: ' . $result->getMessage():$result; $this->notify($msg); } diff --git a/models/TreeLeaf.php b/models/TreeLeaf.php index 1cfe47a5e..7a4a07de5 100644 --- a/models/TreeLeaf.php +++ b/models/TreeLeaf.php @@ -6,9 +6,10 @@ class TreeLeaf extends Doctrine_Record $this->hasColumn('name', 'string'); $this->hasColumn('parent_id', 'integer'); } + public function setUp() { - $this->hasOne('TreeLeaf as Parent', 'TreeLeaf.parent_id'); - $this->hasMany('TreeLeaf as Children', 'TreeLeaf.parent_id'); + $this->hasOne('TreeLeaf as Parent', array('local' => 'parent_id', 'foreign' => 'id')); + $this->hasMany('TreeLeaf as Children', array('local' => 'id', 'foreign' => 'parent_id')); } -} +} \ No newline at end of file diff --git a/tests/Export/SqliteTestCase.php b/tests/Export/SqliteTestCase.php index 061cbb734..4fb30c789 100644 --- a/tests/Export/SqliteTestCase.php +++ b/tests/Export/SqliteTestCase.php @@ -32,23 +32,17 @@ */ class Doctrine_Export_Sqlite_TestCase extends Doctrine_UnitTestCase { - public function testCreateDatabaseDoesNotExecuteSql() + public function testCreateDatabaseDoesNotExecuteSqlAndCreatesSqliteFile() { - try { - $this->export->createDatabase('db'); - $this->fail(); - } catch(Doctrine_Export_Exception $e) { - $this->pass(); - } + $this->export->createDatabase('sqlite.db'); + + $this->assertTrue(file_exists('sqlite.db')); } - public function testDropDatabaseDoesNotExecuteSql() + public function testDropDatabaseDoesNotExecuteSqlAndDeletesSqliteFile() { - try { - $this->export->dropDatabase('db'); - $this->fail(); - } catch(Doctrine_Export_Exception $e) { - $this->pass(); - } + $this->export->dropDatabase('sqlite.db'); + + $this->assertFalse(file_exists('sqlite.db')); } public function testCreateTableSupportsAutoincPks() { @@ -171,24 +165,9 @@ class Doctrine_Export_Sqlite_TestCase extends Doctrine_UnitTestCase $this->export->createTable('sometable', $fields, $options); - //removed this assertion and inserted the two below -// $this->assertEqual($this->adapter->pop(), 'CREATE TABLE sometable (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(4), INDEX myindex (id ASC, name DESC))'); - $this->assertEqual($this->adapter->pop(),"CREATE INDEX myindex_idx ON sometable (id ASC, name DESC)"); $this->assertEqual($this->adapter->pop(), 'CREATE TABLE sometable (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(4) DEFAULT NULL)'); } - - /** - public function testExportSupportsEmulationOfCascadingDeletes() - { - $r = new ForeignKeyTest; - - $this->assertEqual($this->adapter->pop(), 'COMMIT'); - $this->assertEqual($this->adapter->pop(), 'CREATE TRIGGER doctrine_foreign_key_test_cscd_delete AFTER DELETE ON foreign_key_test BEGIN DELETE FROM foreign_key_test WHERE parent_id = old.id;END;'); - $this->assertEqual($this->adapter->pop(), 'CREATE TABLE foreign_key_test (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(2147483647), code INTEGER, content VARCHAR(4000), parent_id INTEGER)'); - $this->assertEqual($this->adapter->pop(), 'BEGIN TRANSACTION'); - } - */ -} +} \ No newline at end of file diff --git a/tests/ManagerTestCase.php b/tests/ManagerTestCase.php index fb16dc08f..af5a21bdf 100644 --- a/tests/ManagerTestCase.php +++ b/tests/ManagerTestCase.php @@ -65,8 +65,8 @@ class Doctrine_Manager_TestCase extends Doctrine_UnitTestCase { // sqlite://full/unix/path/to/file.db // It expects only // since it thinks it is parsing a url // The problem after that is that the dns is not valid when being passed to PDO - $sqlite = 'sqlite:///full/unix/path/to/file.db'; - $sqlitewin = 'sqlite://c:/full/windows/path/to/file.db'; + $sqlite = 'sqlite:////full/unix/path/to/file.db'; + $sqlitewin = 'sqlite:///c:/full/windows/path/to/file.db'; $manager = Doctrine_Manager::getInstance(); diff --git a/tests/Ticket/480TestCase.php b/tests/Ticket/480TestCase.php index bb35b8088..c253d8190 100644 --- a/tests/Ticket/480TestCase.php +++ b/tests/Ticket/480TestCase.php @@ -45,8 +45,8 @@ class Doctrine_Ticket_480_TestCase extends Doctrine_UnitTestCase { public function testInit() { - $this->dbh = new Doctrine_Adapter_Mock('oracle'); - $this->conn = Doctrine_Manager::getInstance()->openConnection($this->dbh); + $this->dbh = new Doctrine_Adapter_Mock('oracle'); + $this->conn = Doctrine_Manager::getInstance()->openConnection($this->dbh); } public function testTicket() diff --git a/tests/TreeStructureTestCase.php b/tests/TreeStructureTestCase.php index b90bd0b9f..1101fd788 100644 --- a/tests/TreeStructureTestCase.php +++ b/tests/TreeStructureTestCase.php @@ -103,16 +103,15 @@ class Doctrine_TreeStructure_TestCase extends Doctrine_UnitTestCase $o4->name = 'o4'; $o4->save(); - $o1->Children; $this->assertFalse(isset($o1->Parent)); + $this->assertTrue(isset($o2->Parent)); + $this->assertTrue($o2->Parent === $o1); + $this->assertFalse(isset($o4->Parent)); + $this->assertTrue(count($o1->Children) == 2); $this->assertTrue(count($o1->get('Children')) == 2); - $this->assertTrue(isset($o2->Parent)); - $this->assertTrue($o2->Parent === $o1); - $this->assertTrue(count($o4->Children) == 0); - $this->assertFalse(isset($o4->Parent)); } public function testTreeStructureFetchingWorksWithDql() { diff --git a/tests/run.php b/tests/run.php index 981307e6f..ffc5471ee 100644 --- a/tests/run.php +++ b/tests/run.php @@ -153,8 +153,8 @@ $data_types->addTestCase(new Doctrine_DataType_Boolean_TestCase()); $test->addTestCase($data_types); // Utility components -$plugins = new GroupTest('Plugin tests: View, Validator, Hook','plugins'); -//$utility->addTestCase(new Doctrine_PessimisticLocking_TestCase()); +$plugins = new GroupTest('Plugin tests: View, Validator, Hook', 'plugins'); +//$plugins->addTestCase(new Doctrine_PessimisticLocking_TestCase()); //$plugins->addTestCase(new Doctrine_Plugin_TestCase()); $plugins->addTestCase(new Doctrine_View_TestCase()); $plugins->addTestCase(new Doctrine_AuditLog_TestCase()); diff --git a/tools/sandbox/config.php.dist b/tools/sandbox/config.php.dist index a30fcbd2e..49be80d8e 100644 --- a/tools/sandbox/config.php.dist +++ b/tools/sandbox/config.php.dist @@ -42,13 +42,12 @@ define('MIGRATIONS_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'migrations'); define('SQL_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'sql'); define('YAML_SCHEMA_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'schema'); define('DB_PATH', SANDBOX_PATH . DIRECTORY_SEPARATOR . 'sandbox.db'); -define('DSN', 'sqlite:' . DB_PATH); +define('DSN', 'sqlite:///' . DB_PATH); require_once(DOCTRINE_PATH . DIRECTORY_SEPARATOR . 'Doctrine.php'); spl_autoload_register(array('Doctrine', 'autoload')); -$pdo = new PDO(DSN); -Doctrine_Manager::connection($pdo, 'sandbox'); +Doctrine_Manager::connection(DSN, 'sandbox'); Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE); \ No newline at end of file diff --git a/tools/sandbox/doctrine.php b/tools/sandbox/doctrine.php index 76b0a2ea9..e0651351e 100644 --- a/tools/sandbox/doctrine.php +++ b/tools/sandbox/doctrine.php @@ -10,4 +10,4 @@ $config = array('data_fixtures_path' => DATA_FIXTURES_PATH, 'yaml_schema_path' => YAML_SCHEMA_PATH); $cli = new Doctrine_Cli($config); -$cli->run($_SERVER['argv']); +$cli->run($_SERVER['argv']); \ No newline at end of file diff --git a/tools/sandbox/sandbox.db b/tools/sandbox/sandbox.db deleted file mode 100755 index e8bbe05e7df8dc5b87896b0aafa0bf7450b033d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6144 zcmeH|K~IA)6vta&EHT-+*LQ?u$$~qZh=k}OPG!tx7YQ;nBm*K8*-mu{u;x1Jwn zt7928X3;o_vXbsW97%h(&k!1(_4>MQ$tqbG#|ZE-`v$KmRYfR|SS6zoP8gjee#sdX z|E)U4iVi18EjHXRXgkM!V)~#iyLuRS;+s5chwZhv*3cT_W%UP20fN