diff options
Diffstat (limited to 'app/frontend/mail/MailModule.php')
-rw-r--r-- | app/frontend/mail/MailModule.php | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/app/frontend/mail/MailModule.php b/app/frontend/mail/MailModule.php new file mode 100644 index 0000000..5f7749b --- /dev/null +++ b/app/frontend/mail/MailModule.php @@ -0,0 +1,95 @@ +<?php + +Prado::using('System.I18N.Globalization'); +Prado::using('Application.mail.MailTemplate'); +Prado::using('Application.mail.MailTemplateTranslator'); + +class MailModule extends TModule { + + private $_templatePath; + private static $_templateExtension = 'html'; + private $_templateCacheSubpath = 'mail'; + private static $_templateTranslationCatalogue = 'messages'; + + public function setTemplatePath($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($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($ext) { + self::$_templateExtension = TPropertyValue::ensureString($ext); + } + + public function getTemplateExtension() { + return self::$_templateExtension; + } + + public function setTranslationCatalogue($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($template, $language=NULL) { + $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; + } + +} + +?> |