From b5bac4c8c144d03d78357b994957392defafca1e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sat, 28 Jun 2008 19:28:09 +0000 Subject: [PATCH] DebugMailer classes extended, again some minor fixes: - New methods added to interface DeliverableMail - Minor fixes to MemoryCache (really minor) - Base mailer now holds some generic methods which are specified in above interface - DebugMailer class with stubs - Mail templates shall now be in own XML format --- .../mailer/class_DeliverableMail.php | 36 ++++++ inc/classes/main/cache/class_MemoryCache.php | 2 +- .../web/class_WebResendLinkCommand.php | 16 ++- inc/classes/main/mailer/class_ | 18 +++ inc/classes/main/mailer/class_BaseMailer.php | 108 ++++++++++++++++++ .../main/mailer/debug/class_DebugMailer.php | 18 +++ 6 files changed, 195 insertions(+), 3 deletions(-) diff --git a/inc/classes/interfaces/mailer/class_DeliverableMail.php b/inc/classes/interfaces/mailer/class_DeliverableMail.php index e9f9e2b..34a5508 100644 --- a/inc/classes/interfaces/mailer/class_DeliverableMail.php +++ b/inc/classes/interfaces/mailer/class_DeliverableMail.php @@ -22,6 +22,42 @@ * along with this program. If not, see . */ interface DeliverableMail extends FrameworkInterface { + /** + * Loads a text or HTML template depending on configuration into the template engine + * + * @param $templateName Name of the template we shall load + * @return void + */ + function loadTemplate ($templateName); + + /** + * Adds a user class to the recipient list for current template + * + * @param $userInstance An instance of a user class + * @return void + */ + function addRecipientByUserInstance (ManageableUser $userInstance); + + /** + * Use subject line provided by the (XML) template otherwise a subject line must be set + * + * @return void + */ + function useSubjectFromTemplate (); + + /** + * Deliver email to the recipient(s) + * + * @return void + */ + function deliverEmail(); + + /** + * Send notification to the admin + * + * @return void + */ + function sendAdminNotification(); } // diff --git a/inc/classes/main/cache/class_MemoryCache.php b/inc/classes/main/cache/class_MemoryCache.php index 9d52a21..50929ba 100644 --- a/inc/classes/main/cache/class_MemoryCache.php +++ b/inc/classes/main/cache/class_MemoryCache.php @@ -101,7 +101,7 @@ class MemoryCache extends BaseFrameworkSystem implements Cacheable { * @param $offset The offset we shall set * @return $data Data to store in the cache */ - public final function offsetget ($offset) { + public final function offsetGet ($offset) { // Default is offset not found $data = null; diff --git a/inc/classes/main/commands/web/class_WebResendLinkCommand.php b/inc/classes/main/commands/web/class_WebResendLinkCommand.php index c08066a..138c44d 100644 --- a/inc/classes/main/commands/web/class_WebResendLinkCommand.php +++ b/inc/classes/main/commands/web/class_WebResendLinkCommand.php @@ -69,6 +69,15 @@ class WebResendLinkCommand extends BaseCommand implements Commandable { // Get template instance $templateInstance = $responseInstance->getTemplateInstance(); + // Get an application instance + $appInstance = $this->getResolverInstance()->getApplicationInstance(); + + // Assign the application data with the template engine + $templateInstance->assignApplicationData($appInstance); + + // Assign base URL + $templateInstance->assignConfigVariable('base_url'); + // Get a mailer class $mailerInstance = ObjectFactory::createObjectByConfiguredName('mailer_class', array($templateInstance)); @@ -81,11 +90,14 @@ class WebResendLinkCommand extends BaseCommand implements Commandable { // Add the recipient $mailerInstance->addRecipientByUserInstance($userInstance); - // Set subject line from template - $mailerInstance->setSubjectFromTemplate(); + // Use subject line from template + $mailerInstance->useSubjectFromTemplate(); // Send the email out $mailerInstance->deliverEmail(); + + // Send out notification to admin (depends on settings) + $mailerInstance->sendAdminNotification(); } /** diff --git a/inc/classes/main/mailer/class_ b/inc/classes/main/mailer/class_ index 5b7e9c5..5baea6f 100644 --- a/inc/classes/main/mailer/class_ +++ b/inc/classes/main/mailer/class_ @@ -50,6 +50,24 @@ class ???Mailer extends BaseMailer implements DeliverableMail { // Return the instance return $mailerInstance; } + + /** + * Deliver email to the recipient(s) + * + * @return void + */ + public function deliverEmail() { + $this->partialStub("You have to implement this method."); + } + + /** + * Send notification to the admin + * + * @return void + */ + public function sendAdminNotification() { + $this->partialStub("You have to implement this method."); + } } // [EOF] diff --git a/inc/classes/main/mailer/class_BaseMailer.php b/inc/classes/main/mailer/class_BaseMailer.php index cec249d..3ffe1c0 100644 --- a/inc/classes/main/mailer/class_BaseMailer.php +++ b/inc/classes/main/mailer/class_BaseMailer.php @@ -22,6 +22,16 @@ * along with this program. If not, see . */ class BaseMailer extends BaseFrameworkSystem { + /** + * Iterateable list of recipients + */ + private $recipientList = array(); + + /** + * Template name + */ + private $templateName = ""; + /** * Protected constructor * @@ -36,6 +46,104 @@ class BaseMailer extends BaseFrameworkSystem { $this->removeNumberFormaters(); $this->removeSystemArray(); } + + /** + * Loads a text or HTML template depending on configuration into the template engine + * + * @param $templateName Name of the template we shall load + * @return void + */ + public function loadTemplate ($templateName) { + // Set template name + $this->setTemplateName($templateName); + + // Get configuration entry + $templatePrefix = $this->getConfigInstance()->readConfig('email_tpl_' . $templateName); + + // Load this email template + $this->getTemplateInstance()->loadEmailTemplate($templatePrefix . '_' . $templateName); + } + + /** + * Adds a user class to the recipient list for current template + * + * @param $userInstance An instance of a user class + * @return void + */ + public function addRecipientByUserInstance (ManageableUser $userInstance) { + // Get template name + $templateName = $this->getTemplateName(); + + // Is the list initialized? + if (!isset($this->recipientList[$templateName]['recipients'])) { + // Then initialize it here + $this->recipientList[$templateName]['recipients'] = new FrameworkArrayObject("FakedRecipientList"); + } // END - if + + // Add it as a recipient + $this->recipientList[$templateName]['recipients']->append($userInstance); + } + + /** + * Protected setter for template name + * + * @param $templateName Name of email template + * @return void + */ + protected final function setTemplateName ($templateName) { + $this->templateName = (string) $templateName; + } + + /** + * Protected getter for template name + * + * @return $templateName Name of email template + */ + protected final function getTemplateName () { + return $this->templateName; + } + + /** + * Setter for subject line + * + * @param $subjectLine Subject line to set + * @return void + */ + public final function setSubjectLine ($subjectLine) { + $this->recipientList[$this->getTemplateName()]['subject'] = (string) $subjectLine; + } + + /** + * Getter for subject line or null if not found + * + * @return $subjectLine Subject line to set + */ + public final function getSubjectLine () { + // Default subject is null + $subjectLine = null; + + // Get template name + $templateName = $this->getTemplateName(); + + // Does the subject line exist? + if ((!empty($templateName)) && (isset($this->recipientList[$templateName]['subject']))) { + // Then use it + $subjectLine = $this->recipientList[$templateName]['subject']; + } // END - if + + // Return it + return $subjectLine; + } + + /** + * Use subject line provided by the (XML) template otherwise a subject line must be set + * + * @return void + */ + public function useSubjectFromTemplate () { + // Set the subject line + $this->setSubjectLine("{?subject?}"); + } } // [EOF] diff --git a/inc/classes/main/mailer/debug/class_DebugMailer.php b/inc/classes/main/mailer/debug/class_DebugMailer.php index 62c5920..f5f1174 100644 --- a/inc/classes/main/mailer/debug/class_DebugMailer.php +++ b/inc/classes/main/mailer/debug/class_DebugMailer.php @@ -55,6 +55,24 @@ class DebugMailer extends BaseMailer implements DeliverableMail { // Return the instance return $mailerInstance; } + + /** + * Deliver email to the recipient(s) + * + * @return void + */ + public function deliverEmail () { + $this->partialStub(); + } + + /** + * Send notification to the admin + * + * @return void + */ + public function sendAdminNotification () { + $this->partialStub(); + } } // [EOF] -- 2.39.5