Loading module/AutorisationDiplomationThese/tests/sql/process_templates.php 0 → 100755 +75 −0 Original line number Diff line number Diff line #!/usr/bin/env php <?php /** * Traitement des templates Twig "*.sql.twig" présents dans le répertoire "./templates"' afin de générer * les scripts SQL correspondants dans "/tmp". * * Les mêmes paramètres pour tous les templates sont fournis au moteur Twig. * * Le nom du doctorant fictif créé est ajouté au nom du template, ex : "create_these_soutenue_dupont.sql". */ require_once __DIR__ . '/../../../../vendor/autoload.php'; use Laminas\Stdlib\Glob; use Twig\Environment; use Twig\Error\Error; use Twig\Loader\FilesystemLoader; const TEMPLATE_EXTENSION = '.sql.twig'; $templatesDir = __DIR__ . '/templates'; $outputDir = '/tmp'; $g = Faker\Factory::create('en_GB'); $name = $g->lastName(); $templateFiles = Glob::glob($templatesDir . '/*' . TEMPLATE_EXTENSION, Glob::GLOB_BRACE); echo sprintf("Templates %s trouvés dans %s :", TEMPLATE_EXTENSION, $templatesDir) . PHP_EOL; if (empty($templateFiles)) { echo "Aucun." . PHP_EOL; exit(0); } else { echo implode(array_map(fn($t) => '- ' . $t . PHP_EOL, $templateFiles)); } echo PHP_EOL; $templateParams = [ 'uuid' => $g->uuid(), // 'nomDoctorant' => $name, 'prenomDoctorant' => $g->firstName(), 'titre' => $g->sentence(), // 'nomActeur1' => $g->lastName(), 'nomActeur2' => $g->lastName(), 'nomActeur3' => $g->lastName(), 'nomActeur4' => $g->lastName(), 'nomActeur5' => $g->lastName(), 'nomActeur6' => $g->lastName(), ]; $loader = new FilesystemLoader($templatesDir); $twig = new Environment($loader, [ //'cache' => '/path/to/compilation_cache', ]); foreach ($templateFiles as $templateFile) { $templateFileName = basename($templateFile); try { $sqlFileContent = $twig->render($templateFileName, $templateParams); } catch (Error $e) { throw new Exception("Erreur Twig rencontrée", null, $e); } $sqlFilePath = $outputDir . '/' . substr($templateFileName, 0, strpos($templateFileName, TEMPLATE_EXTENSION)) . '_' . strtolower($name) . '.sql'; file_put_contents($sqlFilePath, $sqlFileContent); echo '=> ' . $sqlFilePath . PHP_EOL; } echo PHP_EOL; module/AutorisationDiplomationThese/tests/sql/templates/create_these_soutenue.sql.twig 0 → 100644 +232 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
module/AutorisationDiplomationThese/tests/sql/process_templates.php 0 → 100755 +75 −0 Original line number Diff line number Diff line #!/usr/bin/env php <?php /** * Traitement des templates Twig "*.sql.twig" présents dans le répertoire "./templates"' afin de générer * les scripts SQL correspondants dans "/tmp". * * Les mêmes paramètres pour tous les templates sont fournis au moteur Twig. * * Le nom du doctorant fictif créé est ajouté au nom du template, ex : "create_these_soutenue_dupont.sql". */ require_once __DIR__ . '/../../../../vendor/autoload.php'; use Laminas\Stdlib\Glob; use Twig\Environment; use Twig\Error\Error; use Twig\Loader\FilesystemLoader; const TEMPLATE_EXTENSION = '.sql.twig'; $templatesDir = __DIR__ . '/templates'; $outputDir = '/tmp'; $g = Faker\Factory::create('en_GB'); $name = $g->lastName(); $templateFiles = Glob::glob($templatesDir . '/*' . TEMPLATE_EXTENSION, Glob::GLOB_BRACE); echo sprintf("Templates %s trouvés dans %s :", TEMPLATE_EXTENSION, $templatesDir) . PHP_EOL; if (empty($templateFiles)) { echo "Aucun." . PHP_EOL; exit(0); } else { echo implode(array_map(fn($t) => '- ' . $t . PHP_EOL, $templateFiles)); } echo PHP_EOL; $templateParams = [ 'uuid' => $g->uuid(), // 'nomDoctorant' => $name, 'prenomDoctorant' => $g->firstName(), 'titre' => $g->sentence(), // 'nomActeur1' => $g->lastName(), 'nomActeur2' => $g->lastName(), 'nomActeur3' => $g->lastName(), 'nomActeur4' => $g->lastName(), 'nomActeur5' => $g->lastName(), 'nomActeur6' => $g->lastName(), ]; $loader = new FilesystemLoader($templatesDir); $twig = new Environment($loader, [ //'cache' => '/path/to/compilation_cache', ]); foreach ($templateFiles as $templateFile) { $templateFileName = basename($templateFile); try { $sqlFileContent = $twig->render($templateFileName, $templateParams); } catch (Error $e) { throw new Exception("Erreur Twig rencontrée", null, $e); } $sqlFilePath = $outputDir . '/' . substr($templateFileName, 0, strpos($templateFileName, TEMPLATE_EXTENSION)) . '_' . strtolower($name) . '.sql'; file_put_contents($sqlFilePath, $sqlFileContent); echo '=> ' . $sqlFilePath . PHP_EOL; } echo PHP_EOL;
module/AutorisationDiplomationThese/tests/sql/templates/create_these_soutenue.sql.twig 0 → 100644 +232 −0 File added.Preview size limit exceeded, changes collapsed. Show changes