diff --git a/lib/Doctrine.php b/lib/Doctrine.php index 2a12b5ab4..810890cb0 100644 --- a/lib/Doctrine.php +++ b/lib/Doctrine.php @@ -115,6 +115,7 @@ final class Doctrine const PARAM_NULL = 0; const PARAM_STMT = 4; const PARAM_STR = 2; + /** * ATTRIBUTE CONSTANTS */ @@ -180,7 +181,6 @@ final class Doctrine const ATTR_RECORD_LISTENER = 154; const ATTR_THROW_EXCEPTIONS = 155; - /** * LIMIT CONSTANTS */ @@ -189,7 +189,7 @@ final class Doctrine * constant for row limiting */ const LIMIT_ROWS = 1; - + /** * constant for record limiting */ @@ -204,19 +204,19 @@ final class Doctrine * mode for immediate fetching */ const FETCH_IMMEDIATE = 0; - + /** * BATCH FETCHING * mode for batch fetching */ const FETCH_BATCH = 1; - + /** * LAZY FETCHING * mode for offset fetching */ const FETCH_OFFSET = 3; - + /** * LAZY OFFSET FETCHING * mode for lazy offset fetching @@ -232,7 +232,7 @@ final class Doctrine * FETCH VALUEHOLDER */ const FETCH_VHOLDER = 1; - + /** * FETCH RECORD * @@ -242,12 +242,12 @@ final class Doctrine * This is the default fetchmode. */ const FETCH_RECORD = 2; - + /** * FETCH ARRAY */ const FETCH_ARRAY = 3; - + /** * PORTABILITY CONSTANTS */ @@ -257,7 +257,7 @@ final class Doctrine * @see self::ATTR_PORTABILITY */ const PORTABILITY_NONE = 0; - + /** * Portability: convert names of tables and fields to case defined in the * "field_case" option when using the query*(), fetch*() methods. @@ -270,32 +270,32 @@ final class Doctrine * @see self::ATTR_PORTABILITY */ const PORTABILITY_RTRIM = 2; - + /** * Portability: force reporting the number of rows deleted. * @see self::ATTR_PORTABILITY */ const PORTABILITY_DELETE_COUNT = 4; - + /** * Portability: convert empty values to null strings in data output by * query*() and fetch*(). * @see self::ATTR_PORTABILITY */ const PORTABILITY_EMPTY_TO_NULL = 8; - + /** * Portability: removes database/table qualifiers from associative indexes * @see self::ATTR_PORTABILITY */ const PORTABILITY_FIX_ASSOC_FIELD_NAMES = 16; - + /** * Portability: makes Doctrine_Expression throw exception for unportable RDBMS expressions * @see self::ATTR_PORTABILITY */ const PORTABILITY_EXPR = 32; - + /** * Portability: turn on all portability features. * @see self::ATTR_PORTABILITY @@ -310,46 +310,49 @@ final class Doctrine * mode for optimistic locking */ const LOCK_OPTIMISTIC = 0; - + /** * mode for pessimistic locking */ const LOCK_PESSIMISTIC = 1; - + /** * EXPORT CONSTANTS */ /** - * turns of exporting + * EXPORT_NONE */ const EXPORT_NONE = 0; - + /** - * export tables + * EXPORT_TABLES */ const EXPORT_TABLES = 1; - + /** - * export constraints + * EXPORT_CONSTRAINTS */ const EXPORT_CONSTRAINTS = 2; - + /** - * export plugins + * EXPORT_PLUGINS */ const EXPORT_PLUGINS = 4; - + /** - * export all + * EXPORT_ALL */ const EXPORT_ALL = 7; - + /** * HYDRATION CONSTANTS */ const HYDRATE_RECORD = 2; + /** + * HYDRATE_ARRAY + */ const HYDRATE_ARRAY = 3; /** @@ -357,44 +360,70 @@ final class Doctrine */ const VALIDATE_NONE = 0; + /** + * VALIDATE_LENGTHS + */ const VALIDATE_LENGTHS = 1; - + + /** + * VALIDATE_TYPES + */ const VALIDATE_TYPES = 2; - + + /** + * VALIDATE_CONSTRAINTS + */ const VALIDATE_CONSTRAINTS = 4; - + + /** + * VALIDATE_ALL + */ const VALIDATE_ALL = 7; /** + * IDENTIFIER_AUTOINC + * * constant for auto_increment identifier */ const IDENTIFIER_AUTOINC = 1; - + /** + * IDENTIFIER_SEQUENCE + * * constant for sequence identifier */ const IDENTIFIER_SEQUENCE = 2; - + /** + * IDENTIFIER_NATURAL + * * constant for normal identifier */ const IDENTIFIER_NATURAL = 3; - + /** + * IDENTIFIER_COMPOSITE + * * constant for composite identifier */ const IDENTIFIER_COMPOSITE = 4; - + /** + * Path + * * @var string $path doctrine root directory */ private static $_path; - + /** + * Debug + * + * Bool true/false + * * @var boolean $_debug */ private static $_debug = false; - + /** * __construct * @@ -405,7 +434,7 @@ final class Doctrine { throw new Doctrine_Exception('Doctrine is static class. No instances can be created.'); } - + /** * debug * @@ -420,7 +449,7 @@ final class Doctrine return self::$_debug; } - + /** * getPath * returns the doctrine root @@ -435,7 +464,7 @@ final class Doctrine return self::$_path; } - + /** * loadAll * loads all runtime classes @@ -446,7 +475,7 @@ final class Doctrine { return self::loadAllRuntimeClasses(); } - + /** * importSchema * method for importing existing schema to Doctrine_Record classes @@ -459,7 +488,7 @@ final class Doctrine { return self::generateModelsFromDb($directory, $databases); } - + /** * exportSchema * method for exporting Doctrine_Record classes to a schema @@ -471,7 +500,7 @@ final class Doctrine { return self::createTablesFromModels($directory); } - + /** * exportSql * method for exporting Doctrine_Record classes to a schema @@ -482,7 +511,7 @@ final class Doctrine { return self::generateSqlFromModels($directory); } - + /** * loadAllRuntimeClasses * @@ -498,14 +527,14 @@ final class Doctrine self::autoload($class); } } - + /** * loadModels * * Recursively load all models from a directory or array of directories * * @param string $directory Path to directory of models or array of directory paths - * @return void + * @return array $loadedModels */ public static function loadModels($directory) { @@ -529,14 +558,17 @@ final class Doctrine return self::getLoadedModels($declared); } - + /** * getLoadedModels * * Get all the loaded models, you can provide an array of classes or it will use get_declared_classes() * + * Will filter through an array of classes and return the Doctrine_Records out of them. + * If you do not specify $classes it will return all of the currently loaded Doctrine_Records + * * @param $classes Array of classes to filter through, otherwise uses get_declared_classes() - * @return void + * @return array $loadedModels */ public static function getLoadedModels($classes = null) { @@ -548,9 +580,7 @@ final class Doctrine $loadedModels = array(); - // we iterate trhough the diff of previously declared classes - // and currently declared classes - foreach ($classes as $name) { + foreach ((array) $classes as $name) { $class = new ReflectionClass($name); // Skip the following classes @@ -568,14 +598,14 @@ final class Doctrine return $loadedModels; } - + /** * getConnectionByTableName * * Get the connection object for a table by the actual table name * * @param string $tableName - * @return void + * @return object Doctrine_Connection */ public static function getConnectionByTableName($tableName) { @@ -592,7 +622,7 @@ final class Doctrine return Doctrine_Manager::connection(); } - + /** * generateModelsFromDb * @@ -601,12 +631,13 @@ final class Doctrine * @param string $directory Directory to write your models to * @param array $databases Array of databases to generate models for * @return boolean + * @throws Exception */ public static function generateModelsFromDb($directory, array $databases = array()) { return Doctrine_Manager::connection()->import->importSchema($directory, $databases); } - + /** * generateYamlFromDb * @@ -630,6 +661,7 @@ final class Doctrine return $result; } + /** * generateModelsFromYaml * @@ -646,7 +678,7 @@ final class Doctrine return $import->importSchema($yamlPath, 'yml', $directory); } - + /** * createTablesFromModels * @@ -659,12 +691,12 @@ final class Doctrine { return Doctrine_Manager::connection()->export->exportSchema($directory); } - + /** * generateSqlFromModels * * @param string $directory - * @return void + * @return string $build String of sql queries. One query per line */ public static function generateSqlFromModels($directory = null) { @@ -693,7 +725,7 @@ final class Doctrine return $export->exportSchema($yamlPath, 'yml', $directory); } - + /** * createDatabases * @@ -718,7 +750,7 @@ final class Doctrine $connection->export->createDatabase($name); } } - + /** * dropDatabases * @@ -743,7 +775,7 @@ final class Doctrine $connection->export->dropDatabase($name); } } - + /** * dumpData * @@ -759,7 +791,7 @@ final class Doctrine return $data->exportData($yamlPath, 'yml', array(), $individualFiles); } - + /** * loadData * @@ -772,25 +804,15 @@ final class Doctrine */ public static function loadData($yamlPath, $append = false) { - $delete = isset($append) ? ($append ? false : true) : true; - - if ($delete) - { - $models = Doctrine::getLoadedModels(); - - foreach ($models as $model) - { - $model = new $model(); - - $model->getTable()->createQuery()->delete($model)->execute(); - } - } - $data = new Doctrine_Data(); + if (!$append) { + $data->purge(); + } + return $data->importData($yamlPath, 'yml'); } - + /** * loadDummyData * @@ -802,21 +824,11 @@ final class Doctrine */ public static function loadDummyData($append, $num = 5) { - $delete = isset($append) ? ($append ? false : true) : true; - - if ($delete) - { - $models = Doctrine::getLoadedModels(); - - foreach ($models as $model) - { - $model = new $model(); - - $model->getTable()->createQuery()->delete($model)->execute(); - } - } - $data = new Doctrine_Data(); + + if (!$append) { + $data->purge(); + } return $data->importDummyData($num); } @@ -828,7 +840,8 @@ final class Doctrine * * @param string $migrationsPath Path to migrations directory which contains your migration classes * @param string $to Version you wish to migrate to. - * @return void + * @return bool true + * @throws new Doctrine_Migration_Exception */ public static function migrate($migrationsPath, $to = null) { @@ -836,7 +849,7 @@ final class Doctrine return $migration->migrate($to); } - + /** * generateMigrationClass * @@ -844,7 +857,6 @@ final class Doctrine * * @param string $className Name of the Migration class to generate * @param string $migrationsPath Path to directory which contains your migration classes - * @package default */ public static function generateMigrationClass($className, $migrationsPath) { @@ -852,12 +864,13 @@ final class Doctrine return $builder->generateMigrationClass($className); } - + /** * generateMigrationsFromDb * * @param string $migrationsPath * @return void + * @throws new Doctrine_Migration_Exception */ public static function generateMigrationsFromDb($migrationsPath) { @@ -865,7 +878,7 @@ final class Doctrine return $builder->generateMigrationsFromDb(); } - + /** * generateMigrationsFromModels * @@ -903,6 +916,17 @@ final class Doctrine return Doctrine_Manager::connection($adapter, $name); } + /** + * fileFinder + * + * @param string $type + * @return void + */ + public static function fileFinder($type) + { + return Doctrine_FileFinder::type($type); + } + /** * compile * method for making a single file of most used doctrine runtime components diff --git a/lib/Doctrine/Cli.php b/lib/Doctrine/Cli.php index c1c11fd6a..3d7d866f8 100644 --- a/lib/Doctrine/Cli.php +++ b/lib/Doctrine/Cli.php @@ -1,6 +1,6 @@ config = $config; } - + /** * run * * @param string $args * @return void + * @throws new Doctrine_Cli_Exception */ public function run($args) { @@ -82,13 +83,13 @@ class Doctrine_Cli throw new Doctrine_Cli_Exception('Cli task could not be found: '.$taskClass); } } - + /** * prepareArgs * * @param string $taskInstance * @param string $args - * @return void + * @return array $prepared */ protected function prepareArgs($taskInstance, $args) { @@ -128,10 +129,12 @@ class Doctrine_Cli return $prepared; } - + /** * printTasks * + * Prints an index of all the available tasks in the CLI instance + * * @return void */ public function printTasks() @@ -184,12 +187,12 @@ class Doctrine_Cli echo "\n".str_repeat("-", 40)."\n"; } } - + /** * loadTasks * * @param string $directory - * @return void + * @return array $loadedTasks */ public function loadTasks($directory = null) { diff --git a/lib/Doctrine/Data.php b/lib/Doctrine/Data.php index b8c034c28..9868d07a8 100644 --- a/lib/Doctrine/Data.php +++ b/lib/Doctrine/Data.php @@ -238,7 +238,6 @@ class Doctrine_Data * @param string $Doctrine_Record * @param string $fieldName * @return void - * @author Jonathan H. Wage */ public function isRelation(Doctrine_Record $record, $fieldName) { @@ -255,4 +254,24 @@ class Doctrine_Data return false; } + + /** + * purge + * + * Purge all data for loaded models or for the passed array of Doctrine_Records + * + * @param string $models + * @return void + */ + public function purge($models = array()) + { + $models = Doctrine::getLoadedModels($models); + + foreach ($models as $model) + { + $model = new $model(); + + $model->getTable()->createQuery()->delete($model)->execute(); + } + } } \ No newline at end of file diff --git a/lib/Doctrine/Import.php b/lib/Doctrine/Import.php index 7e0e3c91e..73e49adee 100644 --- a/lib/Doctrine/Import.php +++ b/lib/Doctrine/Import.php @@ -37,6 +37,7 @@ Doctrine::autoload('Doctrine_Connection_Module'); class Doctrine_Import extends Doctrine_Connection_Module { protected $sql = array(); + /** * lists all databases * @@ -50,6 +51,7 @@ class Doctrine_Import extends Doctrine_Connection_Module return $this->conn->fetchColumn($this->sql['listDatabases']); } + /** * lists all availible database functions * @@ -63,6 +65,7 @@ class Doctrine_Import extends Doctrine_Connection_Module return $this->conn->fetchColumn($this->sql['listFunctions']); } + /** * lists all database triggers * @@ -73,6 +76,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists all database sequences * @@ -87,6 +91,7 @@ class Doctrine_Import extends Doctrine_Connection_Module return $this->conn->fetchColumn($this->sql['listSequences']); } + /** * lists table constraints * @@ -97,6 +102,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists table constraints * @@ -107,6 +113,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists table constraints * @@ -117,6 +124,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists tables * @@ -127,6 +135,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists table triggers * @@ -137,6 +146,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists table views * @@ -147,6 +157,7 @@ class Doctrine_Import extends Doctrine_Connection_Module { throw new Doctrine_Import_Exception(__FUNCTION__ . ' not supported by this driver.'); } + /** * lists database users * @@ -160,6 +171,7 @@ class Doctrine_Import extends Doctrine_Connection_Module return $this->conn->fetchColumn($this->sql['listUsers']); } + /** * lists database views * @@ -174,6 +186,7 @@ class Doctrine_Import extends Doctrine_Connection_Module return $this->conn->fetchColumn($this->sql['listViews']); } + /** * importSchema * @@ -187,7 +200,13 @@ class Doctrine_Import extends Doctrine_Connection_Module { $connections = Doctrine_Manager::getInstance()->getConnections(); - foreach ($connections as $connection) { + foreach ($connections as $name => $connection) { + // Limit the databases to the ones specified by $databases. + // Check only happens if array is not empty + if (!empty($databases) && !in_array($name, $databases)) { + continue; + } + $builder = new Doctrine_Import_Builder(); $builder->generateBaseClasses(true); $builder->setTargetPath($directory); diff --git a/lib/Doctrine/Migration.php b/lib/Doctrine/Migration.php index e9a3f0037..bbfbdde32 100644 --- a/lib/Doctrine/Migration.php +++ b/lib/Doctrine/Migration.php @@ -342,6 +342,8 @@ class Doctrine_Migration } $this->setCurrentVersion($to); + + return true; } /** diff --git a/lib/Doctrine/Migration/Builder.php b/lib/Doctrine/Migration/Builder.php index 4858475e0..2b8f46dab 100644 --- a/lib/Doctrine/Migration/Builder.php +++ b/lib/Doctrine/Migration/Builder.php @@ -41,7 +41,7 @@ class Doctrine_Migration_Builder * @var string */ private $migrationsPath = ''; - + /** * suffix * @@ -50,7 +50,7 @@ class Doctrine_Migration_Builder * @var string $suffix */ private $suffix = '.class.php'; - + /** * tpl * @@ -73,7 +73,7 @@ class Doctrine_Migration_Builder $this->loadTemplate(); } - + /** * setMigrationsPath * @@ -130,7 +130,7 @@ class %s extends %s } END; } - + /** * generateMigrationsFromDb * @@ -148,7 +148,7 @@ END; return $result; } - + /** * generateMigrationsFromModels * @@ -194,6 +194,8 @@ END; } $this->generateMigrationClass($className, array(), $up, $down); + + return true; } /** @@ -243,7 +245,7 @@ END; * buildDropTable * * @param string $tableData - * @return void + * @return string */ public function buildDropTable($tableData) { @@ -254,7 +256,7 @@ END; * dataToPhpCode * * @param string $data - * @return void + * @return string */ public function dataToPhpCode($data) { @@ -269,7 +271,7 @@ END; /** * generateMigrationClass * - * @package default + * @return void */ public function generateMigrationClass($className, $options = array(), $up = null, $down = null, $return = false) { @@ -296,7 +298,7 @@ END; /** * buildMigrationClass * - * @package default + * @return string */ public function buildMigrationClass($className, $fileName = null, $options = array(), $up = null, $down = null) { diff --git a/lib/Doctrine/Task.php b/lib/Doctrine/Task.php index 65906bf42..11d74e37f 100644 --- a/lib/Doctrine/Task.php +++ b/lib/Doctrine/Task.php @@ -20,7 +20,9 @@ */ /** - * Doctrine_Cli_Task + * Doctrine_Task + * + * Abstract class used for writing Doctrine Tasks * * @package Doctrine * @subpackage Task @@ -41,6 +43,9 @@ abstract class Doctrine_Task /** * __construct * + * Since this is an abstract classes that extend this must follow a patter of Doctrine_Task_{TASK_NAME} + * This is what determines the task name for executing it. + * * @return void */ public function __construct() @@ -54,7 +59,7 @@ abstract class Doctrine_Task * Override with each task class * * @return void - * @author Jonathan H. Wage + * @abstract */ abstract function execute(); @@ -63,7 +68,7 @@ abstract class Doctrine_Task * * Validates that all required fields are present * - * @return void + * @return bool true */ public function validate() { @@ -95,7 +100,7 @@ abstract class Doctrine_Task * * @param string $name * @param string $default - * @return void + * @return mixed */ public function getArgument($name, $default = null) { @@ -109,7 +114,7 @@ abstract class Doctrine_Task /** * getArguments * - * @return void + * @return array $this->arguments */ public function getArguments() { @@ -119,10 +124,10 @@ abstract class Doctrine_Task /** * setArguments * - * @param string $args + * @param array $args * @return void */ - public function setArguments($args) + public function setArguments(array $args) { $this->arguments = $args; } @@ -130,7 +135,7 @@ abstract class Doctrine_Task /** * getTaskName * - * @return void + * @return string $taskName */ public function getTaskName() { @@ -140,7 +145,7 @@ abstract class Doctrine_Task /** * getDescription * - * @return void + * @return string $description */ public function getDescription() { @@ -150,7 +155,7 @@ abstract class Doctrine_Task /** * getRequiredArguments * - * @return void + * @return array $requiredArguments */ public function getRequiredArguments() { @@ -160,7 +165,7 @@ abstract class Doctrine_Task /** * getOptionalArguments * - * @return void + * @return array $optionalArguments */ public function getOptionalArguments() { @@ -170,7 +175,7 @@ abstract class Doctrine_Task /** * getRequiredArgumentsDescriptions * - * @return void + * @return array $requiredArgumentsDescriptions */ public function getRequiredArgumentsDescriptions() { @@ -180,8 +185,7 @@ abstract class Doctrine_Task /** * getOptionalArgumentsDescriptions * - * @return void - * @author Jonathan H. Wage + * @return array $optionalArgumentsDescriptions */ public function getOptionalArgumentsDescriptions() { diff --git a/sandbox/data/fixtures/contact.yml b/sandbox/data/fixtures/contact.yml index cfda25e2d..252df3bb4 100644 --- a/sandbox/data/fixtures/contact.yml +++ b/sandbox/data/fixtures/contact.yml @@ -1,8 +1,4 @@ --- -Contact: - Contact_1: +Contact: + Contact_1: name: Jonathan H. Wage - Contact_3: - name: Daniel Adams - Contact_4: - name: Robert Adams \ No newline at end of file diff --git a/sandbox/data/fixtures/user.yml b/sandbox/data/fixtures/user.yml index aaeece0f8..fb1346b85 100644 --- a/sandbox/data/fixtures/user.yml +++ b/sandbox/data/fixtures/user.yml @@ -1,14 +1,6 @@ --- -User: - User_1: - username: jwage - hair_color: light brown +User: + User_1: + username: jonwage + hair_color: brown Contact: Contact_1 - User_2: - username: dadams - hair_color: dark brown - Contact: Contact_3 - User_3: - username: radams - hair_color: light brown - Contact: Contact_4 \ No newline at end of file