* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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();
}
//
// 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));
// 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();
}
/**
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class BaseMailer extends BaseFrameworkSystem {
+ /**
+ * Iterateable list of recipients
+ */
+ private $recipientList = array();
+
+ /**
+ * Template name
+ */
+ private $templateName = "";
+
/**
* Protected constructor
*
$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]