Translated using Weblate (Turkish)
[phpmyadmin.git] / libraries / classes / Template.php
blob02c9f6cf9b29c43afd2b6dfe62f7f0220fbda345
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * hold PhpMyAdmin\Template class
6 * @package PhpMyAdmin
7 */
8 namespace PhpMyAdmin;
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;
27 use Twig\Environment;
28 use Twig\Loader\FilesystemLoader;
30 /**
31 * Class Template
33 * Handle front end templating
35 * @package PhpMyAdmin
37 class Template
39 /**
40 * Name of the template
42 protected $name = null;
44 /**
45 * Twig environment
47 static protected $twig;
49 const BASE_PATH = 'templates/';
51 /**
52 * Template constructor
54 * @param string $name Template name
56 protected function __construct($name)
58 $this->name = $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)) {
65 $cache_dir = false;
67 $twig = new Environment($loader, array(
68 'auto_reload' => true,
69 'cache' => $cache_dir,
70 'debug' => false,
71 ));
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());
89 $this::$twig = $twig;
93 /**
94 * Template getter
96 * @param string $name Template name
98 * @return Template
100 public static function get($name)
102 return new Template($name);
106 * Render template
108 * @param array $data Variables to be provided to the template
110 * @return string
112 public function render(array $data = array())
114 try {
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
123 * solve it.
125 trigger_error(
126 sprintf(
127 __('Error while working with template cache: %s'),
128 $e->getMessage()
130 E_USER_WARNING
133 return $template->render($data);