_configPath = TPropertyValue::ensureString($configPath); $this->_config = json_decode( file_get_contents( Prado::getPathOfNamespace($this->_configPath, '.json') ) ); } public function setTemplatePath(string $templatePath) { $this->_templatePath = Prado::getPathOfNamespace( TPropertyValue::ensureString($templatePath) ); } public function getTemplatePath() { if (!file_exists($this->_templatePath) || !is_dir($this->_templatePath)) { throw new TConfigurationException( Prado::localize( 'Invalid mail template path' ) ); } return $this->_templatePath; } public function setCachePath(string $cachePath) { $this->templateCacheSubpath = TPropertyValue::ensureString($cachePath); } public function getCachePath() { $cachePath = $this->getApplication()->getRuntimePath() . DIRECTORY_SEPARATOR . $this->_templateCacheSubpath; if (!file_exists($cachePath)) { mkdir($cachePath); } else { if (!is_dir($cachePath) || !is_writable($cachePath)) { throw new TConfigurationException( Prado::localize( 'Template cache path must be a writable directory' ) ); } } return $cachePath; } public function setTemplateExtension(string $ext) { self::$_templateExtension = TPropertyValue::ensureString($ext); } public function getTemplateExtension() { return self::$_templateExtension; } public function setTranslationCatalogue(string $ext) { self::$_templateTranslationCatalogue = TPropertyValue::ensureString($ext); } public function getTranslationCatalogue() { return self::$_templateTranslationCatalogue; } private static $_translator; private static function _getTranslator() { if (!isset(self::$_translator)) { self::$_translator = new MailTemplateTranslator( self::$_templateTranslationCatalogue ); } return self::$_translator; } public function getTemplate(string $template, string $language='') { $template = new MailTemplate($template . '.' . $this->TemplateExtension); $template->setOutputMode(PHPTAL::HTML5); $template->setTemplateRepository($this->_templatePath); $template->setPhpCodeDestination($this->CachePath); $translator = self::_getTranslator(); $translator->setLanguage($language); $template->setTranslator($translator); return $template; } public function getMailer() { if (!$this->_config) { throw new TConfigurationException( Prado::localize( 'Mailer not configured' ) ); } $mailer = new Mailer(); $mailer->configure($this->_config); return $mailer; } } ?>