From 32a81f09d1b96f4286edbd7cfa2dbb05a4e7169b Mon Sep 17 00:00:00 2001 From: "Jonathan H. Wage" Date: Wed, 14 Apr 2010 14:32:47 -0400 Subject: [PATCH] Fixing generate-repositories command so it works again after migration to Symfony console --- .../Command/GenerateRepositoriesCommand.php | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/lib/Doctrine/ORM/Tools/Console/Command/GenerateRepositoriesCommand.php b/lib/Doctrine/ORM/Tools/Console/Command/GenerateRepositoriesCommand.php index 9c1477fcd..5410c08b4 100644 --- a/lib/Doctrine/ORM/Tools/Console/Command/GenerateRepositoriesCommand.php +++ b/lib/Doctrine/ORM/Tools/Console/Command/GenerateRepositoriesCommand.php @@ -40,12 +40,12 @@ use Symfony\Components\Console\Input\InputArgument, */ class GenerateRepositoriesCommand extends Console\Command\Command { - private static $_template = + protected static $_template = '; -use \Doctrine\ORM\EntityRepository; +use Doctrine\ORM\EntityRepository; /** * @@ -103,7 +103,7 @@ EOT ); } - if ( count($metadatas)) { + if (count($metadatas)) { $numRepositories = 0; foreach ($metadatas as $metadata) { @@ -112,7 +112,7 @@ EOT sprintf('Processing repository "%s"', $metadata->customRepositoryClassName) . PHP_EOL ); - $this->_generateRepositoryClass($metadata, $destPath); + $this->_writeRepositoryClass($metadata, $destPath); $numRepositories++; } @@ -129,9 +129,23 @@ EOT } } - private function _generateRepositoryClass($metadata, $destPath) + protected function _generateRepositoryClass($metadata) { - $code = $this->_generateRepositoryClass($metadata->customRepositoryClassName); + fullClassName = $metadata->customRepositoryClassName; + $namespace = substr($fullClassName, 0, strrpos($fullClassName, '\\')); + $className = substr($fullClassName, strrpos($fullClassName, '\\') + 1, strlen($fullClassName)); + + $variables = array( + '' => $namespace, + '' => $className + ); + $code = str_replace(array_keys($variables), array_values($variables), self::$_template); + return $code; + } + + protected function _writeRepositoryClass($metadata, $destPath) + { + $code = $this->_generateRepositoryClass($metadata); $path = $destPath . DIRECTORY_SEPARATOR . str_replace('\\', \DIRECTORY_SEPARATOR, $metadata->customRepositoryClassName) . '.php';