]> Raphaƫl G. Git Repositories - packbundle/blobdiff - Twig/PackTokenParser.php
Fix filters structure
[packbundle] / Twig / PackTokenParser.php
index 24a43e991ddc8b86d2172634c6b8c796553bbdc0..409a3111abec2178cff3ffc8241e719e70519bab 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;
@@ -30,8 +33,8 @@ class PackTokenParser extends \Twig_TokenParser {
                        if ($parameters = $this->containerInterface->getParameter('rapsys_pack')) {
                                if (isset($parameters['timeout'])) {
                                        $timeout = $parameters['timeout'];
                        if ($parameters = $this->containerInterface->getParameter('rapsys_pack')) {
                                if (isset($parameters['timeout'])) {
                                        $timeout = $parameters['timeout'];
-                               } elseif (isset($parameters['user_agent'])) {
-                                       $userAgent = $parameters['user_agent'];
+                               } elseif (isset($parameters['agent'])) {
+                                       $userAgent = $parameters['agent'];
                                } elseif (isset($parameters['redirect'])) {
                                        $redirect = $parameters['redirect'];
                                }
                                } elseif (isset($parameters['redirect'])) {
                                        $redirect = $parameters['redirect'];
                                }
@@ -51,8 +54,8 @@ class PackTokenParser extends \Twig_TokenParser {
                                if (!empty($parameters['timeout'])) {
                                        $this->timeout = $parameters['timeout'];
                                }
                                if (!empty($parameters['timeout'])) {
                                        $this->timeout = $parameters['timeout'];
                                }
-                               if (!empty($parameters['user_agent'])) {
-                                       $this->userAgent = $parameters['user_agent'];
+                               if (!empty($parameters['agent'])) {
+                                       $this->userAgent = $parameters['agent'];
                                }
                                if (!empty($parameters['redirect'])) {
                                        $this->redirect = $parameters['redirect'];
                                }
                                if (!empty($parameters['redirect'])) {
                                        $this->redirect = $parameters['redirect'];
@@ -198,7 +201,7 @@ class PackTokenParser extends \Twig_TokenParser {
                        //Apply all filters
                        foreach($filters as $filter) {
                                //Prefix with filter
                        //Apply all filters
                        foreach($filters as $filter) {
                                //Prefix with filter
-                               $filter = __NAMESPACE__.'\\Filter\\'.$filter;
+                               #$filter = __NAMESPACE__.'\\Filter\\'.$filter;
                                //Init tool object
                                $tool = new $filter($this->containerInterface, $stream->getSourceContext(), $token->getLine());
                                //Process content
                                //Init tool object
                                $tool = new $filter($this->containerInterface, $stream->getSourceContext(), $token->getLine());
                                //Process content
@@ -212,8 +215,12 @@ class PackTokenParser extends \Twig_TokenParser {
 
                //Create output dir on demand
                if (!is_dir($parent = $dir = dirname($this->prefix.$output))) {
 
                //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 {
+                               //XXX: set as 0777, symfony umask (0022) will reduce rights (0755)
+                               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,9 @@ class PackTokenParser extends \Twig_TokenParser {
                }
 
                //Retrieve asset uri
                }
 
                //Retrieve asset uri
-               if (($output = $this->containerInterface->get('assets.packages')->getUrl($output, 'rapsys_pack')) === false) {
+               //XXX: was next line to support module specific asset configuration
+               #if (($output = $this->assetsPackages->getUrl($output, 'rapsys_pack')) === false) {
+               if (($output = $this->assetsPackages->getUrl($output)) === 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());
                }