123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- class sfGeneratorConfigHandler extends sfYamlConfigHandler
- {
-
- public function execute($configFiles)
- {
-
- $config = self::getConfiguration($configFiles);
- if (!$config)
- {
- return '';
- }
- if (!isset($config['generator']))
- {
- throw new sfParseException(sprintf('Configuration file "%s" must specify a generator section.', isset($configFiles[1]) ? $configFiles[1] : $configFiles[0]));
- }
- $config = $config['generator'];
- if (!isset($config['class']))
- {
- throw new sfParseException(sprintf('Configuration file "%s" must specify a generator class section under the generator section.', isset($configFiles[1]) ? $configFiles[1] : $configFiles[0]));
- }
- foreach (array('fields', 'list', 'edit') as $section)
- {
- if (isset($config[$section]))
- {
- throw new sfParseException(sprintf('Configuration file "%s" can specify a "%s" section but only under the param section.', isset($configFiles[1]) ? $configFiles[1] : $configFiles[0], $section));
- }
- }
-
- $generatorManager = new sfGeneratorManager(sfContext::getInstance()->getConfiguration());
-
- $generatorParam = (isset($config['param']) ? $config['param'] : array());
-
- preg_match('#.*/modules/([^/]+)/#', $configFiles[0], $match);
- $generatorParam['moduleName'] = $match[1];
-
- $retval = "<?php\n".
- "// auto-generated by sfGeneratorConfigHandler\n".
- "// date: %s\n%s\n";
- $retval = sprintf($retval, date('Y/m/d H:i:s'), self::getContent($generatorManager, $config['class'], $generatorParam));
- return $retval;
- }
- static public function getContent(sfGeneratorManager $generatorManager, $class, $parameters)
- {
- $data = '';
-
- $r = new ReflectionClass($class);
- if (
- (class_exists('sfPropelAdminGenerator') && ('sfPropelAdminGenerator' == $class || $r->isSubclassOf(new ReflectionClass('sfPropelAdminGenerator'))))
- ||
- (class_exists('sfDoctrineAdminGenerator') && ('sfDoctrineAdminGenerator' == $class || $r->isSubclassOf(new ReflectionClass('sfDoctrineAdminGenerator'))))
- )
- {
- $data .= "require sfConfig::get('sf_symfony_lib_dir').'/plugins/sfCompat10Plugin/config/config.php';\n";
- }
- $data .= $generatorManager->generate($class, $parameters);
- return $data;
- }
-
- static public function getConfiguration(array $configFiles)
- {
- return self::parseYamls($configFiles);
- }
- }
|