Source of file TemplateManager.php
Size: 3,559 Bytes - Last Modified: 2013-07-17T08:22:21+02:00
/home/theseer/Downloads/Symfony/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Profiler/TemplateManager.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\WebProfilerBundle\Profiler; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Profiler\Profiler; use Symfony\Component\HttpKernel\Profiler\Profile; /** * Profiler Templates Manager * * @author Fabien Potencier <fabien@symfony.com> * @author Artur Wielogórski <wodor@wodor.net> */ class TemplateManager { protected $twig; protected $templates; protected $profiler; /** * Constructor. * * @param Profiler $profiler * @param \Twig_Environment $twig * @param array $templates */ public function __construct(Profiler $profiler, \Twig_Environment $twig, array $templates) { $this->profiler = $profiler; $this->twig = $twig; $this->templates = $templates; } /** * Gets the template name for a given panel. * * @param Profile $profile * @param string $panel * * @return mixed * * @throws NotFoundHttpException */ public function getName(Profile $profile, $panel) { $templates = $this->getNames($profile); if (!isset($templates[$panel])) { throw new NotFoundHttpException(sprintf('Panel "%s" is not registered in profiler or is not present in viewed profile.', $panel)); } return $templates[$panel]; } /** * Gets the templates for a given profile. * * @param Profile $profile * * @return array */ public function getTemplates(Profile $profile) { $templates = $this->getNames($profile); foreach ($templates as $name => $template) { $templates[$name] = $this->twig->loadTemplate($template); } return $templates; } /** * Gets template names of templates that are present in the viewed profile. * * @param Profile $profile * * @return array * * @throws \UnexpectedValueException */ protected function getNames(Profile $profile) { $templates = array(); foreach ($this->templates as $arguments) { if (null === $arguments) { continue; } list($name, $template) = $arguments; if (!$this->profiler->has($name) || !$profile->hasCollector($name)) { continue; } if ('.html.twig' === substr($template, -10)) { $template = substr($template, 0, -10); } if (!$this->templateExists($template.'.html.twig')) { throw new \UnexpectedValueException(sprintf('The profiler template "%s.html.twig" for data collector "%s" does not exist.', $template, $name)); } $templates[$name] = $template.'.html.twig'; } return $templates; } // to be removed when the minimum required version of Twig is >= 2.0 protected function templateExists($template) { $loader = $this->twig->getLoader(); if ($loader instanceof \Twig_ExistsLoaderInterface) { return $loader->exists($template); } try { $loader->getSource($template); return true; } catch (\Twig_Error_Loader $e) { } return false; } } |