X-Git-Url: https://git.rapsys.eu/packbundle/blobdiff_plain/95b2853ef1741e12228063742f3a34097e393a6e..c6a6f1167057fb157093cd414eaf498e9a67040f:/Twig/PackTokenParser.php diff --git a/Twig/PackTokenParser.php b/Twig/PackTokenParser.php index 24a43e9..64de8e5 100644 --- a/Twig/PackTokenParser.php +++ b/Twig/PackTokenParser.php @@ -4,6 +4,7 @@ namespace Rapsys\PackBundle\Twig; use Symfony\Component\HttpKernel\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\Asset\Packages; class PackTokenParser extends \Twig_TokenParser { private $tag; @@ -12,15 +13,17 @@ class PackTokenParser extends \Twig_TokenParser { * Constructor. * * @param class $fileLocator The FileLocator instance + * @param class $containerInterface The Container Interface instance * @param class $assetsPackages The Assets Packages instance * @param string $prefix The prefix path * @param string $tag The tag name * @param string $output The default output string * @param array $filters The default filters array */ - public function __construct(FileLocator $fileLocator, ContainerInterface $containerInterface, $prefix, $tag, $output, $filters) { + public function __construct(FileLocator $fileLocator, ContainerInterface $containerInterface, Packages $assetsPackages, $prefix, $tag, $output, $filters) { $this->fileLocator = $fileLocator; $this->containerInterface = $containerInterface; + $this->assetsPackages = $assetsPackages; $this->prefix = $prefix; $this->tag = $tag; $this->output = $output; @@ -213,7 +216,11 @@ class PackTokenParser extends \Twig_TokenParser { //Create output dir on demand if (!is_dir($parent = $dir = dirname($this->prefix.$output))) { //XXX: set as 0777, symfony umask (0022) will reduce rights (0755) - mkdir($dir, 0777, true); + try { + mkdir($dir, 0777, true); + } catch (\Exception $e) { + throw new \Twig_Error_Syntax(sprintf('Unable to create directory: %s', $dir), $token->getLine(), $stream->getSourceContext()); + } } //Send file content @@ -233,7 +240,7 @@ class PackTokenParser extends \Twig_TokenParser { } //Retrieve asset uri - if (($output = $this->containerInterface->get('assets.packages')->getUrl($output, 'rapsys_pack')) === false) { + if (($output = $this->assetsPackages->getUrl($output, 'rapsys_pack')) === false) { throw new \Twig_Error_Syntax(sprintf('Unable to get url for asset: %s with package %s', $output, 'rapsys_pack'), $token->getLine(), $stream->getSourceContext()); }