Merge pull request #15767 from ninichat/feat/hook_subscription_mail_send

New: Add sendMail hook in subscription
This commit is contained in:
Laurent Destailleur 2020-12-16 15:18:49 +01:00 committed by GitHub
commit 2d841d6b59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -300,57 +300,75 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && !
if (!$error) { if (!$error) {
// Send confirmation Email // Send confirmation Email
if ($object->email && $sendalsoemail) { // $object is 'Adherent' if ($object->email && $sendalsoemail) { // $object is 'Adherent'
$subject = ''; $parameters = array(
$msg = ''; 'datesubscription' => $datesubscription,
'amount' => $amount,
// Send subscription email 'ccountid' => $accountid,
include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; 'operation' => $operation,
$formmail = new FormMail($db); 'label' => $label,
// Set output language 'num_chq' => $num_chq,
$outputlangs = new Translate('', $conf); 'emetteur_nom' => $emetteur_nom,
$outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); 'emetteur_banque' => $emetteur_banque,
// Load traductions files required by page 'datesubend' => $datesubend
$outputlangs->loadLangs(array("main", "members")); );
$reshook = $hookmanager->executeHooks('sendMail', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
// Get email content from template if ($reshook < 0) {
$arraydefaultmessage = null; setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
$labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION;
if (!empty($labeltouse)) $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse);
if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
$subject = $arraydefaultmessage->topic;
$msg = $arraydefaultmessage->content;
} }
$substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object); if (empty($reshook)) {
complete_substitutions_array($substitutionarray, $outputlangs, $object); $subject = '';
$subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs); $msg = '';
$texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnSubscription()), $substitutionarray, $outputlangs);
// Attach a file ? // Send subscription email
$file = ''; include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
$listofpaths = array(); $formmail = new FormMail($db);
$listofnames = array(); // Set output language
$listofmimes = array(); $outputlangs = new Translate('', $conf);
if (is_object($object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) { $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
$invoicediroutput = $conf->facture->dir_output; // Load traductions files required by page
$fileparams = dol_most_recent_file($invoicediroutput.'/'.$object->invoice->ref, preg_quote($object->invoice->ref, '/').'[^\-]+'); $outputlangs->loadLangs(array("main", "members"));
$file = $fileparams['fullname'];
$listofpaths = array($file); // Get email content from template
$listofnames = array(basename($file)); $arraydefaultmessage = null;
$listofmimes = array(dol_mimetype($file)); $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION;
}
$moreinheader = 'X-Dolibarr-Info: send_an_email by adherents/subscription.php'."\r\n"; if (!empty($labeltouse)) $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse);
$result = $object->send_an_email($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames, "", "", 0, -1, '', $moreinheader); if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
if ($result < 0) { $subject = $arraydefaultmessage->topic;
$errmsg = $object->error; $msg = $arraydefaultmessage->content;
setEventMessages($object->error, $object->errors, 'errors'); }
} else {
setEventMessages($langs->trans("EmailSentToMember", $object->email), null, 'mesgs'); $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
$texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnSubscription()), $substitutionarray, $outputlangs);
// Attach a file ?
$file = '';
$listofpaths = array();
$listofnames = array();
$listofmimes = array();
if (is_object($object->invoice) && (!is_object($arraydefaultmessage) || intval($arraydefaultmessage->joinfiles))) {
$invoicediroutput = $conf->facture->dir_output;
$fileparams = dol_most_recent_file($invoicediroutput.'/'.$object->invoice->ref, preg_quote($object->invoice->ref, '/').'[^\-]+');
$file = $fileparams['fullname'];
$listofpaths = array($file);
$listofnames = array(basename($file));
$listofmimes = array(dol_mimetype($file));
}
$moreinheader = 'X-Dolibarr-Info: send_an_email by adherents/subscription.php'."\r\n";
$result = $object->send_an_email($texttosend, $subjecttosend, $listofpaths, $listofmimes, $listofnames, "", "", 0, -1, '', $moreinheader);
if ($result < 0) {
$errmsg = $object->error;
setEventMessages($object->error, $object->errors, 'errors');
} else {
setEventMessages($langs->trans("EmailSentToMember", $object->email), null, 'mesgs');
}
} }
} else { } else {
setEventMessages($langs->trans("NoEmailSentToMember"), null, 'mesgs'); setEventMessages($langs->trans("NoEmailSentToMember"), null, 'mesgs');