/**
  * @dataProvider      getParseInvalidTests
  * @expectedException \InvalidArgumentException
  */
 public function testParseInvalid($name)
 {
     $kernel = new Kernel();
     $kernel->boot();
     $converter = new TemplateNameParser($kernel);
     $converter->parse($name);
 }
 /**
  * {@inheritdoc}
  */
 public function parse($name)
 {
     if (preg_match('/^@/', $name)) {
         return new TemplateReference($name, 'twig');
     }
     return parent::parse($name);
 }
 public function parse($name)
 {
     try {
         return parent::parse($name);
     } catch (\InvalidArgumentException $e) {
         return $this->parseMagentoName($name);
     }
     throw new \InvalidArgumentException("Unable to parse magento template " . $name);
 }
Esempio n. 4
0
 /**
  * {@inheritdoc}
  */
 public function parse($name)
 {
     if ($name instanceof TemplateReferenceInterface) {
         return $name;
     }
     if (isset($this->cache[$name])) {
         return $this->cache[$name];
     }
     $parsed = parent::parse($name);
     // if application bundle - use custom structure reference
     if ('App' === $parsed->get('bundle')) {
         return $this->cache[$name] = new TemplateReference($parsed->get('bundle'), $parsed->get('controller'), $parsed->get('name'), $parsed->get('format'), $parsed->get('engine'));
     }
     return $parsed;
 }
Esempio n. 5
0
 /**
  * {@inheritdoc}
  *
  * @throws \InvalidArgumentException
  * @throws \RuntimeException
  */
 public function parse($name)
 {
     if ($name instanceof TemplateReferenceInterface) {
         return $name;
     } elseif (isset($this->cache[$name])) {
         return $this->cache[$name];
     }
     // normalize name
     $name = str_replace(':/', ':', preg_replace('#/{2,}#', '/', strtr($name, '\\', '/')));
     if (false !== strpos($name, '..')) {
         throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name));
     }
     if (!preg_match('/^([^:]*):([^:]*):(.+)\\.([^\\.]+)\\.([^\\.]+)$/', $name, $matches)) {
         $templateReference = parent::parse($name);
         if ($templateReference->get('engine')) {
             return $templateReference;
         }
         throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid (format is "bundle:section:template.format.engine").', $name));
     }
     //check for template specific theme override
     $bundle = $matches[1];
     preg_match('/^(.*?)\\|(.*?)$/', $matches[1], $templateOverride);
     if (!empty($templateOverride[1])) {
         $themeOverride = $templateOverride[1];
         $bundle = $templateOverride[2];
     }
     $template = new TemplateReference($bundle, $matches[2], $matches[3], $matches[4], $matches[5]);
     if (!empty($themeOverride)) {
         $template->setThemeOverride($themeOverride);
     }
     $template->setThemeHelper($this->container->get('mautic.helper.theme'));
     $template->setPathsHelper($this->container->get('mautic.helper.paths'));
     if ($template->get('bundle')) {
         try {
             $this->kernel->getBundle($template->get('bundle'));
         } catch (\Exception $e) {
             throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid.', $name), 0, $e);
         }
     }
     return $this->cache[$name] = $template;
 }
 /**
  * {@inheritdoc}
  */
 public function __construct(KernelInterface $kernel)
 {
     parent::__construct($kernel);
     $this->factory = $kernel->getContainer()->get('mautic.factory');
 }