Welcome to mirror list, hosted at ThFree Co, Russian Federation.

generate-twig-cache « scripts - github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4c24f48facc71350acb67e38715861475596b419 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
/* vim: set expandtab sw=4 ts=4 sts=4 ft=php: */
define('PHPMYADMIN', 1);
require_once 'libraries/vendor_config.php';
require_once AUTOLOAD_FILE;

use PhpMyAdmin\Twig\CharsetsExtension;
use PhpMyAdmin\Twig\CoreExtension;
use PhpMyAdmin\Twig\I18nExtension;
use PhpMyAdmin\Twig\IndexExtension;
use PhpMyAdmin\Twig\MessageExtension;
use PhpMyAdmin\Twig\PartitionExtension;
use PhpMyAdmin\Twig\PhpFunctionsExtension;
use PhpMyAdmin\Twig\PluginsExtension;
use PhpMyAdmin\Twig\RelationExtension;
use PhpMyAdmin\Twig\SanitizeExtension;
use PhpMyAdmin\Twig\ServerPrivilegesExtension;
use PhpMyAdmin\Twig\StorageEngineExtension;
use PhpMyAdmin\Twig\TableExtension;
use PhpMyAdmin\Twig\TrackerExtension;
use PhpMyAdmin\Twig\TransformationsExtension;
use PhpMyAdmin\Twig\UrlExtension;
use PhpMyAdmin\Twig\UtilExtension;

$tplDir = dirname(__FILE__) . '/../templates';
$tmpDir = dirname(__FILE__) . '/../twig-templates';
$loader = new Twig\Loader\FilesystemLoader($tplDir);

// force auto-reload to always have the latest version of the template
$twig = new Twig\Environment($loader, array(
    'cache' => $tmpDir,
    'auto_reload' => true
));
$twig->addExtension(new CharsetsExtension());
$twig->addExtension(new CoreExtension());
$twig->addExtension(new I18nExtension());
$twig->addExtension(new IndexExtension());
$twig->addExtension(new MessageExtension());
$twig->addExtension(new PartitionExtension());
$twig->addExtension(new PhpFunctionsExtension());
$twig->addExtension(new PluginsExtension());
$twig->addExtension(new RelationExtension());
$twig->addExtension(new SanitizeExtension());
$twig->addExtension(new ServerPrivilegesExtension());
$twig->addExtension(new StorageEngineExtension());
$twig->addExtension(new TableExtension());
$twig->addExtension(new TrackerExtension());
$twig->addExtension(new TransformationsExtension());
$twig->addExtension(new UrlExtension());
$twig->addExtension(new UtilExtension());

$replacements = [];

$twigCache = $twig->getCache(false);

// iterate over all templates
foreach (new \RecursiveIteratorIterator(
    new \RecursiveDirectoryIterator($tplDir),
    \RecursiveIteratorIterator::LEAVES_ONLY
) as $file) {
    // Skip test files
    if (strpos($file->getPathname(), '/test/') !== false) {
        continue;
    }
    // force compilation
    if ($file->isFile() && $file->getExtension() === 'twig') {
        $name = str_replace($tplDir . '/', '', $file->getPathname());
        $template = $twig->loadTemplate($name);

        // Generate line map
        $cacheFilename = $twigCache->generateKey($name, $twig->getTemplateClass($name));
        $template_file = 'templates/' . $name;
        $cache_file = str_replace($tmpDir, 'twig-templates', $cacheFilename);
        $replacements[$cache_file] = array($template_file, $template->getDebugInfo());
    }
}

// Store replacements in JSON
$handle = fopen($tmpDir . '/replace.json', 'w');
fwrite($handle, json_encode($replacements));
fclose($handle);