2 /* vim: set expandtab sw=4 ts=4 sts=4: */
4 * hold PhpMyAdmin\Template class
10 use PhpMyAdmin\Twig\CharsetsExtension
;
11 use PhpMyAdmin\Twig\CoreExtension
;
12 use PhpMyAdmin\Twig\I18nExtension
;
13 use PhpMyAdmin\Twig\IndexExtension
;
14 use PhpMyAdmin\Twig\MessageExtension
;
15 use PhpMyAdmin\Twig\PartitionExtension
;
16 use PhpMyAdmin\Twig\PhpFunctionsExtension
;
17 use PhpMyAdmin\Twig\PluginsExtension
;
18 use PhpMyAdmin\Twig\RelationExtension
;
19 use PhpMyAdmin\Twig\SanitizeExtension
;
20 use PhpMyAdmin\Twig\ServerPrivilegesExtension
;
21 use PhpMyAdmin\Twig\StorageEngineExtension
;
22 use PhpMyAdmin\Twig\TableExtension
;
23 use PhpMyAdmin\Twig\TrackerExtension
;
24 use PhpMyAdmin\Twig\TransformationsExtension
;
25 use PhpMyAdmin\Twig\UrlExtension
;
26 use PhpMyAdmin\Twig\UtilExtension
;
28 use Twig\Loader\FilesystemLoader
;
33 * Handle front end templating
40 * Name of the template
42 protected $name = null;
47 static protected $twig;
49 const BASE_PATH
= 'templates/';
52 * Template constructor
54 * @param string $name Template name
56 protected function __construct($name)
60 if (is_null($this::$twig)) {
61 $loader = new FilesystemLoader(static::BASE_PATH
);
62 $cache_dir = $GLOBALS['PMA_Config']->getTempDir('twig');
63 /* Twig expects false when cache is not configured */
64 if (is_null($cache_dir)) {
67 $twig = new Environment($loader, array(
68 'auto_reload' => true,
69 'cache' => $cache_dir,
72 $twig->addExtension(new CharsetsExtension());
73 $twig->addExtension(new CoreExtension());
74 $twig->addExtension(new I18nExtension());
75 $twig->addExtension(new IndexExtension());
76 $twig->addExtension(new MessageExtension());
77 $twig->addExtension(new PartitionExtension());
78 $twig->addExtension(new PhpFunctionsExtension());
79 $twig->addExtension(new PluginsExtension());
80 $twig->addExtension(new RelationExtension());
81 $twig->addExtension(new SanitizeExtension());
82 $twig->addExtension(new ServerPrivilegesExtension());
83 $twig->addExtension(new StorageEngineExtension());
84 $twig->addExtension(new TrackerExtension());
85 $twig->addExtension(new TableExtension());
86 $twig->addExtension(new TransformationsExtension());
87 $twig->addExtension(new UrlExtension());
88 $twig->addExtension(new UtilExtension());
96 * @param string $name Template name
100 public static function get($name)
102 return new Template($name);
108 * @param array $data Variables to be provided to the template
112 public function render(array $data = array())
115 $template = $this::$twig->load($this->name
. '.twig');
116 } catch (\RuntimeException
$e) {
117 /* Retry with disabled cache */
118 $this::$twig->setCache(false);
119 $template = $this::$twig->load($this->name
. '.twig');
121 * The trigger error is intentionally after second load
122 * to avoid triggering error when disabling cache does not
127 __('Error while working with template cache: %s'),
133 return $template->render($data);