Stable release of v4.0.0-alpha1

First alpha release of Component Builder towards Joomla 4 (very unstable...).
This commit is contained in:
2024-03-09 21:47:28 +02:00
parent 3c91a5cdbb
commit c660bb6280
3040 changed files with 296304 additions and 269820 deletions

View File

@ -3,8 +3,8 @@
* @package Joomla.Component.Builder
*
* @created 30th April, 2015
* @author Llewellyn van der Merwe <http://www.joomlacomponentbuilder.com>
* @github Joomla Component Builder <https://github.com/vdm-io/Joomla-Component-Builder>
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
@ -17,6 +17,11 @@ defined('_JEXEC') or die('Restricted access');
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Factory;
use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Mail\Mail;
use Joomla\Registry\Registry;
/**
* ###Component### component email helper
*/
@ -27,28 +32,28 @@ abstract class ###Component###Email
*
* @var activeRecipient (array)
*/
public static $active = array();
public static $active = [];
/**
* Configuraiton object
*
* @var JConfig
* @var Registry
*/
public static $config = null;
public static ?Registry $config = null;
/**
* Mailer object
*
* @var JMail
* @var Mail
*/
public static $mailer = null;
public static ?Mail $mailer = null;
/**
* Custom Headers
*
* @var array
*/
protected static $header = array();
protected static array $header = [];
/**
* Get a configuration object
@ -58,7 +63,7 @@ abstract class ###Component###Email
{
if (!self::$config)
{
self::$config = JComponentHelper::getParams('com_###component###');
self::$config = ComponentHelper::getParams('com_###component###');
}
return self::$config;
@ -97,7 +102,7 @@ abstract class ###Component###Email
* @static
* @access public
*/
public static function validateAddress($address, $patternselect = null)
public static function validateAddress($address, $patternselect = null): bool
{
return self::getMailerInstance()->validateAddress($address, $patternselect);
}
@ -105,13 +110,13 @@ abstract class ###Component###Email
/**
* Get a mailer object.
*
* Returns the global {@link JMail} object, only creating it if it doesn't already exist.
* Returns the global {@link Mail} object, only creating it if it doesn't already exist.
*
* @return JMail object
* @return Mail object
*
* @see JMail
* @see Mail
*/
public static function getMailer()
public static function getMailer(): Mail
{
if (!self::$mailer)
{
@ -126,58 +131,58 @@ abstract class ###Component###Email
/**
* Create a mailer object
*
* @return JMail object
* @return Mail object
*
* @see JMail
* @see Mail
*/
protected static function createMailer()
protected static function createMailer(): Mail
{
// set component params
$conf = self::getConfig();
// now load the mailer
$mailer = $conf->get('mailer', 'global');
// Create a JMail object
$mail = JMail::getInstance();
// Create a Mail object
$mail = Mail::getInstance();
// check if set to global
if ('global' == $mailer)
{
// get the global details
$globalConf = JFactory::getConfig();
$mailer = $globalConf->get('mailer');
$smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $globalConf->get('smtpuser');
$smtppass = $globalConf->get('smtppass');
$smtphost = $globalConf->get('smtphost');
$smtpsecure = $globalConf->get('smtpsecure');
$smtpport = $globalConf->get('smtpport');
$sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname');
$globalConf = Factory::getConfig();
$mailer = $globalConf->get('mailer');
$smtpauth = ($globalConf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $globalConf->get('smtpuser');
$smtppass = $globalConf->get('smtppass');
$smtphost = $globalConf->get('smtphost');
$smtpsecure = $globalConf->get('smtpsecure');
$smtpport = $globalConf->get('smtpport');
$sendmail = $globalConf->get('sendmail');
$mailfrom = $globalConf->get('mailfrom');
$fromname = $globalConf->get('fromname');
$replyto = $globalConf->get('replyto');
$replytoname = $globalConf->get('replytoname');
}
else
{
$smtpauth = ($conf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $conf->get('smtpuser');
$smtppass = $conf->get('smtppass');
$smtphost = $conf->get('smtphost');
$smtpsecure = $conf->get('smtpsecure');
$smtpport = $conf->get('smtpport');
$sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('emailfrom');
$fromname = $conf->get('fromname');
$replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname');
$smtpauth = ($conf->get('smtpauth') == 0) ? null : 1;
$smtpuser = $conf->get('smtpuser');
$smtppass = $conf->get('smtppass');
$smtphost = $conf->get('smtphost');
$smtpsecure = $conf->get('smtpsecure');
$smtpport = $conf->get('smtpport');
$sendmail = $conf->get('sendmail');
$mailfrom = $conf->get('emailfrom');
$fromname = $conf->get('fromname');
$replyto = $conf->get('replyto');
$replytoname = $conf->get('replytoname');
}
// Set global sender
$mail->setSender(array($mailfrom, $fromname));
// set the global reply-to if found
if ($replyto && $replytoname)
{
@ -226,25 +231,25 @@ abstract class ###Component###Email
*/
public static function send($recipient, $subject, $body, $textonly, $mode = 0, $bounce_email = null, $idsession = null, $mailreply = null, $replyname = null , $mailfrom = null, $fromname = null, $cc = null, $bcc = null, $attachment = null, $embeded = null , $embeds = null)
{
// Get a JMail instance
// Get a Mail instance
$mail = self::getMailer();
// set component params
$conf = self::getConfig();
// set if we have override
if ($mailfrom && $fromname)
{
$mail->setSender(array($mailfrom, $fromname));
}
// load the bounce email as sender if set
if (!is_null($bounce_email))
{
{
$mail->Sender = $bounce_email;
}
// Add tag to email to identify it
// Add tag to email to identify it
if (!is_null($idsession))
{
$mail->addCustomHeader('X-VDMmethodID:'.$idsession);
@ -262,7 +267,7 @@ abstract class ###Component###Email
// set the subject & Body
$mail->setSubject($subject);
$mail->setBody($body);
// Are we sending the email as HTML?
if ($mode)
{
@ -273,7 +278,7 @@ abstract class ###Component###Email
//embed images
if ($embeded)
{
if(###Component###Helper::checkArray($embeds))
if(Super___0a59c65c_9daf_4bc9_baf4_e063ff9e6a8a___Power::check($embeds))
{
foreach($embeds as $embed)
{
@ -308,21 +313,21 @@ abstract class ###Component###Email
{
if (!empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{
$mail->DKIM_domain = $conf->get('dkim_domain');
$mail->DKIM_selector = $conf->get('dkim_selector');
$mail->DKIM_identity = $conf->get('dkim_identity');
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$tmp = tempnam(sys_get_temp_dir(), 'VDM');
$h = fopen($tmp, 'w');
$mail->DKIM_domain = $conf->get('dkim_domain');
$mail->DKIM_selector = $conf->get('dkim_selector');
$mail->DKIM_identity = $conf->get('dkim_identity');
$mail->DKIM_passphrase = $conf->get('dkim_passphrase');
$tmp = tempnam(sys_get_temp_dir(), 'VDM');
$h = fopen($tmp, 'w');
fwrite($h, $conf->get('dkim_private'));
fclose($h);
$mail->DKIM_private = $tmp;
$mail->DKIM_private = $tmp;
}
}
$sendmail = $mail->Send();
if ($conf->get('enable_dkim') && !empty($conf->get('dkim_domain')) && !empty($conf->get('dkim_selector')) && !empty($conf->get('dkim_private')) && !empty($conf->get('dkim_public')))
{
@unlink($tmp);
@ -351,7 +356,7 @@ abstract class ###Component###Email
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
*
@ -360,7 +365,7 @@ abstract class ###Component###Email
*/
public static function setBasicBody($html, $subject)
{
$body = array();
$body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";
@ -397,7 +402,7 @@ abstract class ###Component###Email
/**
* Set html text (in a row) and subject (as title) to a email table.
* do not use <p> instead use <br />
* in your html that you pass to this method
* in your html that you pass to this method
* since it is a table row it does not
* work well with paragraphs
*
@ -406,7 +411,7 @@ abstract class ###Component###Email
*/
public static function setTableBody($html, $subject)
{
$body = array();
$body = [];
$body[] = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
$body[] = "<html xmlns=\"http://www.w3.org/1999/xhtml\">";
$body[] = "<head>";