<?php
namespace AWCmsBundle\EventListener;
use AWCmsBundle\Manager\SiteManager;
use Symfony\Bundle\TwigBundle\Loader\FilesystemLoader;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\KernelInterface;
use Twig_Loader_Chain;
use Twig_Loader_Filesystem;
class TemplateListener
{
/**
* @var string
*/
protected $rootDirectory;
/**
* @var FilesystemLoader The Twig loader
*/
protected $twigLoader;
/**
* @var \AWCmsBundle\Manager\SiteManager The site manager
*/
protected $siteManager;
/**
* TemplateListener constructor.
*
* @param string $rootDirectory
* @param FilesystemLoader $twigLoader The Twig loader
* @param \AWCmsBundle\Manager\SiteManager $siteManager The site manager
*/
public function __construct (FilesystemLoader $twigLoader, SiteManager $siteManager, $rootDirectory)
{
$this->rootDirectory = $rootDirectory;
$this->twigLoader = $twigLoader;
$this->siteManager = $siteManager;
}
/**
* On request.
*
* @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event The event
*/
public function onKernelRequest(GetResponseEvent $event)
{
$site = $this->siteManager->getSite();
if (null !== $site && null !== $site->getCustomTheme()) {
$twigPath = $this->rootDirectory.'/Resources/views/themes/'.$site->getCustomTheme();
if(!is_dir($twigPath)) {
$twigPath = $this->rootDirectory.'/../templates/themes/'.$site->getCustomTheme();
}
if (!in_array($twigPath, $this->twigLoader->getPaths())) {
$this->twigLoader->prependPath($twigPath);
}
}
}
}