/** * {@inheritdoc} */ public function getPath() { $controller = str_replace('\\', '/', $this->get('controller')); if (!empty($this->themeOverride)) { try { $theme = $this->factory->getTheme($this->themeOverride); $themeDir = $theme->getThemePath(); } catch (\Exception $e) { } } else { $theme = $this->factory->getTheme(); $themeDir = $theme->getThemePath(); } $fileName = $this->get('name') . '.' . $this->get('format') . '.' . $this->get('engine'); $path = (empty($controller) ? '' : $controller . '/') . $fileName; if (!empty($this->parameters['bundle'])) { $bundleRoot = $this->factory->getSystemPath('bundles', true); $addonRoot = $this->factory->getSystemPath('addons', true); // Check for a system-wide override $themePath = $this->factory->getSystemPath('themes', true); $systemTemplate = $themePath . '/system/' . $this->parameters['bundle'] . '/' . $path; if (file_exists($systemTemplate)) { $template = $systemTemplate; } else { //check for an override and load it if there is if (!empty($themeDir) && file_exists($themeDir . '/html/' . $this->parameters['bundle'] . '/' . $path)) { // Theme override $template = $themeDir . '/html/' . $this->parameters['bundle'] . '/' . $path; } else { preg_match('/Mautic(.*?)Bundle/', $this->parameters['bundle'], $match); if (!empty($match[1]) && file_exists($bundleRoot . '/' . $match[1] . 'Bundle/Views/' . $path) || file_exists($addonRoot . '/' . $this->parameters['bundle'] . '/Views/' . $path)) { // Mautic core template $template = '@' . $this->get('bundle') . '/Views/' . $path; } } } } else { $themes = $this->factory->getInstalledThemes(); if (isset($themes[$controller])) { //this is a file in a specific Mautic theme folder $theme = $this->factory->getTheme($controller); $template = $theme->getThemePath() . '/html/' . $fileName; } } if (empty($template)) { //try the parent return parent::getPath(); } return $template; }
/** * @param MauticFactory $factory */ public function __construct(MauticFactory $factory) { $this->translator = $factory->getTranslator(); $this->themes = $factory->getInstalledThemes('asset'); $this->assetModel = $factory->getModel('asset'); }