X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fmailer%2Fdebug%2Fclass_DebugMailer.php;h=14bdd412db4a536714a6ac233d0be29f3cd2c0fc;hp=6437823bd87da7e14ac0344398db1060453c46df;hb=5bf79580029c4f6ee71e6c9e7890169e4b344def;hpb=d527a312ec4b2983fc0ecda2179ce335c1a5a1f9 diff --git a/inc/classes/main/mailer/debug/class_DebugMailer.php b/inc/classes/main/mailer/debug/class_DebugMailer.php index 6437823..14bdd41 100644 --- a/inc/classes/main/mailer/debug/class_DebugMailer.php +++ b/inc/classes/main/mailer/debug/class_DebugMailer.php @@ -1,6 +1,7 @@ * @version 0.0.0 @@ -19,7 +20,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * along with this program. If not, see . */ class DebugMailer extends BaseMailer implements DeliverableMail { /** @@ -30,26 +31,144 @@ class DebugMailer extends BaseMailer implements DeliverableMail { protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); - - // Set part description - $this->setObjectDescription("A mailer for debugging purposes"); - - // Create unique ID number - $this->generateUniqueId(); } /** * Creates an instance of this mailer class * + * @param $templateInstance A template instance + * @param $appInstance An application helper class + * @param $templateName Name of email template to set * @return $mailerInstance An instance of this mailer class */ - public final static function createDebugMailer () { + public final static function createDebugMailer (CompileableTemplate $templateInstance, ManageableApplication $appInstance, $templateName) { // Get a new instance $mailerInstance = new DebugMailer(); + // Set template instance + $mailerInstance->setTemplateInstance($templateInstance); + + // Set application instance + $mailerInstance->setApplicationInstance($appInstance); + + // Set template name + $mailerInstance->setTemplateName('resend_link'); + // Return the instance return $mailerInstance; } + + /** + * Deliver email to the recipient(s) + * + * @return void + * @throws InvalidInterfaceException If the recipient instance does not implement ManageableMember + */ + public function deliverEmail () { + // Get template instance + $templateInstance = $this->getTemplateInstance(); + + // "Deliver" all emails + foreach ($this->getRecipientList() as $templateName => $recipientList) { + // Walk through all recipients and "sent", or better print, it out + foreach ($recipientList['recipients'] as $recipientInstance) { + // The recipient should be a user instance, right? + if (!$recipientInstance instanceof ManageableMember) { + // Invalid entry found! + throw new InvalidInterfaceException(array($this, 'ManageableMember'), self::EXCEPTION_REQUIRED_INTERFACE_MISSING); + } + + // User class found, so entry is valid, first load the template + $this->loadTemplate($templateName); + + // Set subject line + $templateInstance->assignVariable('subject', $this->getSubjectLine()); + + // Walk through all variables, first config to assign them + foreach ($recipientList['config_vars'] as $variable => $dummy) { + // Load the config value and set it + $templateInstance->assignConfigVariable($variable); + } // END - if + + // Now do the same with the values but ask the "value instance" instead! + foreach ($recipientList['value_vars'] as $variable => $dummy) { + // Is the value instance there? + if (!isset($recipientList['values'][$variable])) { + // Throw exception + throw new NullPointerException ($this, self::EXCEPTION_IS_NULL_POINTER); + } // END - if + + // Get the field from the value instance + $fieldValue = $recipientList['values'][$variable]->getField($variable); + + // Set it in template engine + $templateInstance->assignVariable($variable, $fieldValue); + } + + // Render the content + $templateInstance->renderXmlContent(); + + // Get responce instance + $responseInstance = $this->getApplicationInstance()->getResponseInstance(); + + // Transfer the data to the response + $this->getTemplateInstance()->transferToResponse($responseInstance); + } // END - foreach + } // END - foreach + } + + /** + * Send notification to the admin + * + * @return void + * @todo 0% done + */ + public function sendAdminNotification () { + // Unfinished work + } + + /** + * Invokes the mail delivery process which will prepare the output of the message in a code template + * + * @return void + */ + public function invokeMailDelivery () { + // Get template instance + $templateInstance = $this->getTemplateInstance(); + + // Get the compiled message and set it as new template variable + $message = $templateInstance->getCompiledData(); + $templateInstance->assignVariable('message', $message); + + // Load the code template + $templateInstance->loadCodeTemplate('mail_debug'); + + // Compile the template + $templateInstance->compileTemplate(); + + // Assign this template with variable + $templateInstance->assignTemplateWithVariable('mail_debug', 'content'); + + // Load header template + $templateInstance->loadCodeTemplate('header'); + + // Compile and assign it with a variable + $templateInstance->compileTemplate(); + $templateInstance->assignTemplateWithVariable('header', 'header'); + + // Load footer template + $templateInstance->loadCodeTemplate('footer'); + + // Compile and assign it with a variable + $templateInstance->compileTemplate(); + $templateInstance->assignTemplateWithVariable('footer', 'footer'); + + // Load the master template + $templateInstance->loadCodeTemplate($this->getApplicationInstance()->getMasterTemplate()); + + // Then compile it again + $templateInstance->compileVariables(); + } } // [EOF]