Core/Modules/mailer/class.mailer.php

74 lines
2.0 KiB
PHP

<?php
namespace Module\Mailer;
use \FuzeWorks\Module;
use \PHPMailer;
/**
* Main class for the Mailer module
* This class is a simple wrapper for PHPMailer. It has a simple prepared config file and can create instances based on these config files.
*/
class Main extends Module {
/**
* Array of all the active PHPMailer instances
* @access private
* @var Array of \PHPMailer
*/
private $mailers = array();
/**
* First function to get called. Initiates all module variables
* @access public
*/
public function onLoad() {
$this->cfg = $this->config->loadConfigFile('mailer', $this->getModulePath());
}
/**
* Return one of the instances of PHPMailer.
* If not found, it creates a new instance and returns that
* @access public
* @param String instance name
* @return \PHPMailer instance
*/
public function __get($name) {
if (!isset($this->mailers[$name])) {
$this->mailers[$name] = new PHPMailer();
// Set settings
$cfg = $this->cfg;
// First check what is enabled
if ($cfg->sendmail_enabled && !$cfg->smtp_enabled) {
$this->mailers[$name]->isSendmail();
} elseif (!$cfg->sendmail_enabled && $cfg->smtp_enabled) {
$this->mailers[$name]->isSMTP();
$this->mailers[$name]->SMTPDebug = $cfg->smtp_debug_level;
$this->mailers[$name]->Debugoutput = 'html';
$this->mailers[$name]->Host = $cfg->smtp_host;
$this->mailers[$name]->Port = $cfg->smtp_port;
// Authentication
if ($cfg->smtp_auth) {
$this->mailers[$name]->SMTPAuth = true;
$this->mailers[$name]->Username = $cfg->smtp_username;
$this->mailers[$name]->Password = $cfg->smtp_password;
}
// Set the sender correctly
if ($cfg->sender_name != '' && $cfg->sender_mail != '') {
$this->mailers[$name]->setFrom($cfg->sender_mail, $cfg->sender_name);
} elseif ($cfg->sender_name == '' && $cfg->sender_mail != '') {
$mail->From = $cfg->sender_mail;
}
}
}
return $this->mailers[$name];
}
}
?>