From 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 9 Jan 2020 10:55:03 +0100 Subject: phpmyadmin working --- srcs/phpmyadmin/libraries/classes/Template.php | 142 +++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 srcs/phpmyadmin/libraries/classes/Template.php (limited to 'srcs/phpmyadmin/libraries/classes/Template.php') diff --git a/srcs/phpmyadmin/libraries/classes/Template.php b/srcs/phpmyadmin/libraries/classes/Template.php new file mode 100644 index 0000000..3866fd2 --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/Template.php @@ -0,0 +1,142 @@ +getTempDir('twig'); + /* Twig expects false when cache is not configured */ + if ($cache_dir === null) { + $cache_dir = false; + } + $twig = new Environment($loader, [ + 'auto_reload' => true, + 'cache' => $cache_dir, + 'debug' => false, + ]); + $twig->addExtension(new CoreExtension()); + $twig->addExtension(new I18nExtension()); + $twig->addExtension(new MessageExtension()); + $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()); + static::$twig = $twig; + } + } + + /** + * Loads a template. + * + * @param string $templateName Template path name + * + * @return Twig_TemplateWrapper + * @throws LoaderError + * @throws RuntimeError + * @throws SyntaxError + */ + public function load(string $templateName): Twig_TemplateWrapper + { + try { + $template = static::$twig->load($templateName . '.twig'); + } catch (RuntimeException $e) { + /* Retry with disabled cache */ + static::$twig->setCache(false); + $template = static::$twig->load($templateName . '.twig'); + /* + * The trigger error is intentionally after second load + * to avoid triggering error when disabling cache does not + * solve it. + */ + trigger_error( + sprintf( + __('Error while working with template cache: %s'), + $e->getMessage() + ), + E_USER_WARNING + ); + } + + return $template; + } + + /** + * @param string $template Template path name + * @param array $data Associative array of template variables + * + * @return string + * @throws Throwable + * @throws Twig_Error_Loader + * @throws Twig_Error_Runtime + * @throws Twig_Error_Syntax + */ + public function render(string $template, array $data = []): string + { + return $this->load($template)->render($data); + } +} -- cgit