diff --git a/lib/classes/module/console/systemTemplateGenerator.class.php b/lib/classes/module/console/systemTemplateGenerator.class.php index ce012db01f..66d6780608 100644 --- a/lib/classes/module/console/systemTemplateGenerator.class.php +++ b/lib/classes/module/console/systemTemplateGenerator.class.php @@ -25,97 +25,101 @@ use Symfony\Component\Console\Command\Command; class module_console_systemTemplateGenerator extends Command { - public function __construct($name = null) - { - parent::__construct($name); + public function __construct($name = null) + { + parent::__construct($name); - $this->setDescription('Generate template files'); + $this->setDescription('Generate template files'); - return $this; - } + return $this; + } - public function execute(InputInterface $input, OutputInterface $output) - { - $tplDir = __DIR__ . '/../../../../templates/'; - $tmpDir = __DIR__ . '/../../../../tmp/cache_twig/'; - - $loader = new Twig_Loader_Filesystem($tplDir); + public function execute(InputInterface $input, OutputInterface $output) + { + $tplDirs = array( + realpath(__DIR__ . '/../../../../templates/web/'), + realpath(__DIR__ . '/../../../../templates/mobile/') + ); - $twig = new Twig_Environment($loader, array( - 'cache' => $tmpDir, + $n_ok = $n_error = 0; + + foreach ($tplDirs as $tplDir) + { + $tmpDir = __DIR__ . '/../../../../tmp/cache_twig/'; + + $loader = new Twig_Loader_Filesystem($tplDir); + + $twig = new Twig_Environment($loader, array( + 'cache' => $tmpDir, 'auto_reload' => true - )); - $twig->addExtension(new Twig_Extensions_Extension_I18n()); + )); - /** - * @todo clean all duplicate filters - */ - $twig->addFilter('serialize', new Twig_Filter_Function('serialize')); - $twig->addFilter('sbas_names', new Twig_Filter_Function('phrasea::sbas_names')); - $twig->addFilter('sbas_name', new Twig_Filter_Function('phrasea::sbas_names')); - $twig->addFilter('unite', new Twig_Filter_Function('p4string::format_octets')); - $twig->addFilter('stristr', new Twig_Filter_Function('stristr')); - $twig->addFilter('implode', new Twig_Filter_Function('implode')); - $twig->addFilter('stripdoublequotes', new Twig_Filter_Function('stripdoublequotes')); - $twig->addFilter('phraseadate', new Twig_Filter_Function('phraseadate::getPrettyString')); - $twig->addFilter('format_octets', new Twig_Filter_Function('p4string::format_octets')); - $twig->addFilter('geoname_display', new Twig_Filter_Function('geonames::name_from_id')); - $twig->addFilter('get_collection_logo', new Twig_Filter_Function('collection::getLogo')); - $twig->addFilter('nl2br', new Twig_Filter_Function('nl2br')); - $twig->addFilter('floor', new Twig_Filter_Function('floor')); - $twig->addFilter('bas_name', new Twig_Filter_Function('phrasea::bas_names')); - $twig->addFilter('bas_names', new Twig_Filter_Function('phrasea::bas_names')); - $twig->addFilter('basnames', new Twig_Filter_Function('phrasea::bas_names')); - $twig->addFilter('urlencode', new Twig_Filter_Function('urlencode')); - $twig->addFilter('sbasFromBas', new Twig_Filter_Function('phrasea::sbasFromBas')); - $twig->addFilter('str_replace', new Twig_Filter_Function('str_replace')); - $twig->addFilter('strval', new Twig_Filter_Function('strval')); - $twig->addFilter('key_exists', new Twig_Filter_Function('array_key_exists')); - $twig->addFilter('array_keys', new Twig_Filter_Function('array_keys')); - $twig->addFilter('round', new Twig_Filter_Function('round')); - $twig->addFilter('get_class', new Twig_Filter_Function('get_class')); - $twig->addFilter('formatdate', new Twig_Filter_Function('phraseadate::getDate')); - $twig->addFilter('getPrettyDate', new Twig_Filter_Function('phraseadate::getPrettyString')); - $twig->addFilter('prettyDate', new Twig_Filter_Function('phraseadate::getPrettyString')); - $twig->addFilter('prettyString', new Twig_Filter_Function('phraseadate::getPrettyString')); - $twig->addFilter('formatoctet', new Twig_Filter_Function('p4string::format_octet')); - $twig->addFilter('getDate', new Twig_Filter_Function('phraseadate::getDate')); - $twig->addFilter('geoname_name_from_id', new Twig_Filter_Function('geonames::name_from_id')); + $twig->addExtension(new Twig_Extensions_Extension_I18n()); + + /** + * @todo clean all duplicate filters + */ + $twig->addFilter('serialize', new Twig_Filter_Function('serialize')); + $twig->addFilter('sbas_names', new Twig_Filter_Function('phrasea::sbas_names')); + $twig->addFilter('sbas_name', new Twig_Filter_Function('phrasea::sbas_names')); + $twig->addFilter('unite', new Twig_Filter_Function('p4string::format_octets')); + $twig->addFilter('stristr', new Twig_Filter_Function('stristr')); + $twig->addFilter('implode', new Twig_Filter_Function('implode')); + $twig->addFilter('stripdoublequotes', new Twig_Filter_Function('stripdoublequotes')); + $twig->addFilter('phraseadate', new Twig_Filter_Function('phraseadate::getPrettyString')); + $twig->addFilter('format_octets', new Twig_Filter_Function('p4string::format_octets')); + $twig->addFilter('geoname_display', new Twig_Filter_Function('geonames::name_from_id')); + $twig->addFilter('get_collection_logo', new Twig_Filter_Function('collection::getLogo')); + $twig->addFilter('nl2br', new Twig_Filter_Function('nl2br')); + $twig->addFilter('floor', new Twig_Filter_Function('floor')); + $twig->addFilter('bas_name', new Twig_Filter_Function('phrasea::bas_names')); + $twig->addFilter('bas_names', new Twig_Filter_Function('phrasea::bas_names')); + $twig->addFilter('basnames', new Twig_Filter_Function('phrasea::bas_names')); + $twig->addFilter('urlencode', new Twig_Filter_Function('urlencode')); + $twig->addFilter('sbasFromBas', new Twig_Filter_Function('phrasea::sbasFromBas')); + $twig->addFilter('str_replace', new Twig_Filter_Function('str_replace')); + $twig->addFilter('strval', new Twig_Filter_Function('strval')); + $twig->addFilter('key_exists', new Twig_Filter_Function('array_key_exists')); + $twig->addFilter('array_keys', new Twig_Filter_Function('array_keys')); + $twig->addFilter('round', new Twig_Filter_Function('round')); + $twig->addFilter('get_class', new Twig_Filter_Function('get_class')); + $twig->addFilter('formatdate', new Twig_Filter_Function('phraseadate::getDate')); + $twig->addFilter('getPrettyDate', new Twig_Filter_Function('phraseadate::getPrettyString')); + $twig->addFilter('prettyDate', new Twig_Filter_Function('phraseadate::getPrettyString')); + $twig->addFilter('prettyString', new Twig_Filter_Function('phraseadate::getPrettyString')); + $twig->addFilter('formatoctet', new Twig_Filter_Function('p4string::format_octet')); + $twig->addFilter('getDate', new Twig_Filter_Function('phraseadate::getDate')); + $twig->addFilter('geoname_name_from_id', new Twig_Filter_Function('geonames::name_from_id')); - $n_ok = $n_error = 0; + $finder = new Symfony\Component\Finder\Finder(); + foreach ($finder->files()->in(array($tplDir)) as $file) + { + try + { + $twig->loadTemplate(str_replace($tplDir, '', $file->getPathname())); + $output->writeln('' . $file . ''); + $n_ok ++; + } + catch (Exception $e) + { + $output->writeln('' . $e->getMessage() . ''); + $n_error ++; + } + } + } - foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($tplDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) - { - if (strpos($file, '/.svn/') !== false) - continue; - if (substr($file->getFilename(), 0, 1) === '.') - continue; + $output->writeln(""); + $output->write(sprintf('%d templates generated. ', $n_ok)); - try - { - $twig->loadTemplate(str_replace($tplDir, '', $file)); - $output->writeln('' . $file . ''); - $n_ok++; - } - catch (Exception $e) - { - $output->writeln('' . $e->getMessage() . ''); - $n_error++; - } + if ($n_error > 0) + { + $output->write(sprintf('%d templates failed.', $n_error)); + } + + $output->writeln(""); + + return $n_error; } - $output->writeln(""); - $output->write(sprintf('%d templates generated. ', $n_ok)); - - if ($n_error > 0) - { - $output->write(sprintf('%d templates failed.', $n_error)); - } - - $output->writeln(""); - - return $n_error; - } - }