131 lines
No EOL
3.4 KiB
PHP
131 lines
No EOL
3.4 KiB
PHP
<?php
|
|
/**
|
|
* Plugin Facteur 4
|
|
* (c) 2009-2019 Collectif SPIP
|
|
* Distribue sous licence GPL
|
|
*
|
|
* @package SPIP\Facteur\Inc\Facteur_factory
|
|
*/
|
|
|
|
|
|
/**
|
|
* Lister les methodes mailer disponibles et le nom de la classe a instancier
|
|
* @return array[]
|
|
*/
|
|
function facteur_lister_methodes_mailer() {
|
|
|
|
$methodes = array(
|
|
'mail' => array(
|
|
'class' => 'FacteurMail',
|
|
'password' => array(),
|
|
),
|
|
'smtp' => array(
|
|
'class' => 'FacteurSMTP',
|
|
'password' => array('smtp_password'),
|
|
),
|
|
);
|
|
|
|
// permettre l'extension via un pipeline
|
|
$methodes = pipeline(
|
|
'facteur_lister_methodes_mailer',
|
|
array(
|
|
'args' => array(),
|
|
'data' => $methodes
|
|
)
|
|
);
|
|
|
|
return $methodes;
|
|
}
|
|
|
|
|
|
/**
|
|
* Recuperer la config de Facteur, avec eventuelle surcharge
|
|
* en s'assurant que les meta ont bien ete migrees
|
|
*
|
|
* @param array $options
|
|
* @return array
|
|
*/
|
|
function facteur_config($options = array()) {
|
|
if (!function_exists('lire_config')) {
|
|
include_spip('inc/config');
|
|
}
|
|
|
|
// si jamais les meta sont pas migrees... le faire a l'arrache !
|
|
if (empty($GLOBALS['meta']['facteur']) or !@unserialize($GLOBALS['meta']['facteur'])) {
|
|
include_spip('facteur_administrations');
|
|
facteur_migre_metas_to_config();
|
|
}
|
|
|
|
$config = lire_config('facteur');
|
|
if (!empty($options) and is_array($options)) {
|
|
$config = array_merge($config, $options);
|
|
}
|
|
|
|
if ($config['adresse_envoi'] !== 'oui' or !$config['adresse_envoi_email']) {
|
|
$config = array_merge($config, facteur_config_envoyeur_par_defaut());
|
|
}
|
|
|
|
$config['adresses_site'] = array(
|
|
$GLOBALS['meta']['adresse_site'] . '/',
|
|
url_de_base(),
|
|
);
|
|
|
|
// et on emule la globale facteur_smtp pour les plugins qui s'appuient dessus comme mailshot
|
|
// @deprecated : ne devrait plus servir
|
|
$GLOBALS['meta']['facteur_smtp'] = ($config['mailer'] === 'smtp' ? 'oui' : 'non');
|
|
|
|
return $config;
|
|
}
|
|
|
|
/**
|
|
* Generer la config par defaut de l'envoyeur, hors reglage specifique ou surcharge
|
|
* @return array
|
|
*/
|
|
function facteur_config_envoyeur_par_defaut() {
|
|
$config = array(
|
|
'adresse_envoi_email' => '',
|
|
'adresse_envoi_nom' => '',
|
|
);
|
|
|
|
$config['adresse_envoi_email'] = (isset($GLOBALS['meta']["email_envoi"]) AND $GLOBALS['meta']["email_envoi"]) ?
|
|
$GLOBALS['meta']["email_envoi"]
|
|
: $GLOBALS['meta']['email_webmaster'];
|
|
|
|
if (!function_exists('extraire_multi')) {
|
|
include_spip('inc/filtres');
|
|
}
|
|
|
|
$config['adresse_envoi_nom'] = strip_tags(extraire_multi($GLOBALS['meta']['nom_site']));
|
|
|
|
return $config;
|
|
}
|
|
|
|
/**
|
|
* Generer le FacteurXXX selon la config par defaut/passee en options
|
|
* @param array $options
|
|
* @return \SPIP\Facteur\FacteurMail
|
|
* @throws \PHPMailer\PHPMailer\Exception
|
|
*/
|
|
function facteur_factory($options = array()) {
|
|
|
|
if (!is_array($options)) {
|
|
$options = array();
|
|
}
|
|
$options = facteur_config($options);
|
|
|
|
$config_mailer = $options['mailer'];
|
|
$methodes = facteur_lister_methodes_mailer();
|
|
if (!empty($methodes[$config_mailer]['class'])
|
|
and $FacteurClass = $methodes[$config_mailer]['class']
|
|
and include_spip("inc/Facteur/$FacteurClass")
|
|
and class_exists($FacteurClass = "SPIP\\Facteur\\{$FacteurClass}")){
|
|
return new $FacteurClass($options);
|
|
}
|
|
else {
|
|
spip_log("Impossible de trouver la medthode $config_mailer ou sa classe " . (empty($methodes[$config_mailer]) ? '' : $methodes[$config_mailer]), 'facteur' . _LOG_ERREUR);
|
|
|
|
// fallback fonction mail()
|
|
include_spip('inc/Facteur/FacteurMail');
|
|
return new SPIP\Facteur\FacteurMail($options);
|
|
}
|
|
} |