]> Raphaƫl G. Git Repositories - packbundle/blobdiff - Twig/PackTokenParser.php
Catch directory creation failure with a nice message
[packbundle] / Twig / PackTokenParser.php
index 24a43e991ddc8b86d2172634c6b8c796553bbdc0..64de8e5fbb10105ba889fc9baa2435737eb26585 100644 (file)
@@ -4,6 +4,7 @@ namespace Rapsys\PackBundle\Twig;
 
 use Symfony\Component\HttpKernel\Config\FileLocator;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 use Symfony\Component\HttpKernel\Config\FileLocator;
 use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\Asset\Packages;
 
 class PackTokenParser extends \Twig_TokenParser {
        private $tag;
 
 class PackTokenParser extends \Twig_TokenParser {
        private $tag;
@@ -12,15 +13,17 @@ class PackTokenParser extends \Twig_TokenParser {
         * Constructor.
         *
         * @param class         $fileLocator            The FileLocator instance
         * 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
         */
         * @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->fileLocator              = $fileLocator;
                $this->containerInterface       = $containerInterface;
+               $this->assetsPackages           = $assetsPackages;
                $this->prefix                   = $prefix;
                $this->tag                      = $tag;
                $this->output                   = $output;
                $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)
                //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
                }
 
                //Send file content
@@ -233,7 +240,7 @@ class PackTokenParser extends \Twig_TokenParser {
                }
 
                //Retrieve asset uri
                }
 
                //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());
                }
 
                        throw new \Twig_Error_Syntax(sprintf('Unable to get url for asset: %s with package %s', $output, 'rapsys_pack'), $token->getLine(), $stream->getSourceContext());
                }