Browse Source

Gestion de la config : separer le calcul de l'envoyeur par defaut, mieux gerer la surcharge, et assurer la compat des autres plugins en emulant une meta facteur_smtp (mailshot)

svn/root/tags/v4.0.3
Cerdic 3 years ago
parent
commit
c699436115
  1. 15
      classes/facteur.php
  2. 2
      facteur_administrations.php
  3. 3
      formulaires/configurer_facteur.html
  4. 15
      formulaires/configurer_facteur.php
  5. 49
      inc/facteur.php

15
classes/facteur.php

@ -27,15 +27,16 @@ class Facteur extends SPIP\Facteur\FacteurSMTP {
*/
public function __construct($email, $objet, $message_html, $message_texte, $options = array()) {
$defaut = facteur_config_default();
// config eventuellement surchargeee lors de l'appel
$config = facteur_config($options);
// compat ancicenne option smtp
$defaut['smtp'] = ($defaut['mailer'] === 'smtp' ? 'oui' : 'non');
// On fusionne les options avec d'éventuelles surcharges lors de l'appel
$options = array_merge($defaut, $options);
// compat ancienne option smtp
if (isset($options['smtp']) and empty($config['mailer'])) {
$config['mailer'] = ($options['smtp'] === 'oui' ? 'smtp' : 'mail');
}
if ($options['smtp'] !== 'oui') {
// toute autre config que smtp se degrade en mail()
if ($config['mailer'] !== 'smtp') {
unset($options['smtp_host']);
unset($options['smtp_port']);
}

2
facteur_administrations.php

@ -61,8 +61,8 @@ function facteur_migre_metas_to_config(){
if (isset($GLOBALS['meta']["facteur_smtp"])) {
if (!lire_config("facteur/mailer",'')) {
ecrire_config("facteur/mailer", $GLOBALS['meta']["facteur_smtp"] === 'oui' ? 'smtp' : 'mail');
effacer_meta('facteur_smtp');
}
effacer_meta('facteur_smtp');
}
}

3
formulaires/configurer_facteur.html

@ -118,6 +118,9 @@
</p>
</div></form>
</div>
<style>
.choix .suite .editer { background: #f8f8f8;}
</style>
<script type="text/javascript">
jQuery(function(){
jQuery('.choix>.suite').each(function(){

15
formulaires/configurer_facteur.php

@ -30,16 +30,15 @@ function formulaires_configurer_facteur_charger_dist() {
$valeurs[$_key] = '';
}
include_spip('classes/facteur');
// recuperer le from par defaut actuel pour l'indiquer dans le formulaire
$facteur = new Facteur('test@example.org', 'Test', '', '', array('adresse_envoi' => 'non'));
$valeurs['_from_defaut'] = $facteur->From;
include_spip('inc/facteur');
$from_defaut = facteur_config_envoyeur_par_defaut();
$valeurs['_from_defaut'] = $from_defaut['adresse_envoi_email'];
$valeurs['_from_defaut_nom'] = '';
$valeurs['_from_defaut_email'] = $facteur->From;
if ($facteur->FromName) {
$valeurs['_from_defaut'] = $facteur->FromName . ' &lt;'.$valeurs['_from_defaut'].'&gt;';
$valeurs['_from_defaut_nom'] = $facteur->FromName;
$valeurs['_from_defaut_email'] = $from_defaut['adresse_envoi_email'];
if (!empty($from_defaut['adresse_envoi_nom'])) {
$valeurs['_from_defaut'] = $from_defaut['adresse_envoi_nom'] . ' &lt;'.$valeurs['_from_defaut'].'&gt;';
$valeurs['_from_defaut_nom'] = $from_defaut['adresse_envoi_nom'];
}
if (defined('_TEST_EMAIL_DEST')) {

49
inc/facteur.php

@ -10,31 +10,30 @@
/**
* Recuperer la config par defaut de Facteur, en s'assurant que les meta ont bien ete migrees
* 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_default() {
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 (isset($GLOBALS['meta']["facteur_smtp"])) {
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['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']));
$config = array_merge($config, facteur_config_envoyeur_par_defaut());
}
$config['adresses_site'] = array(
@ -42,6 +41,32 @@ function facteur_config_default() {
url_de_base(),
);
// et on emule la globale facteur_smtp pour les plugins qui s'appuient dessus comme mailshot
$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;
}
@ -57,7 +82,7 @@ function facteur_factory($options = array()) {
if (!is_array($options)) {
$options = array();
}
$options = array_merge(facteur_config_default(), $options);
$options = facteur_config($options);
$config_mailer = $options['mailer'];

Loading…
Cancel
Save