Adding List-Unsubscribe to header of newsletters
This commit is contained in:
@ -5,9 +5,15 @@ use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Mailer as MailerTask;
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterTask;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
||||
use MailPoet\Models\Subscriber as SubscriberModel;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Models\StatisticsNewsletters as StatisticsNewslettersModel;
|
||||
use MailPoet\Models\Subscriber as SubscriberModel;
|
||||
use MailPoet\Newsletter\Links\Links;
|
||||
use MailPoet\Router\Endpoints\Track;
|
||||
use MailPoet\Router\Router;
|
||||
use MailPoet\Subscription\Url;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
@ -116,7 +122,8 @@ class SendingQueue {
|
||||
$prepared_subscribers_ids,
|
||||
$prepared_newsletters[0],
|
||||
$prepared_subscribers[0],
|
||||
$statistics
|
||||
$statistics,
|
||||
$this->getExtraParams($queue, $prepared_subscribers_ids)
|
||||
);
|
||||
$prepared_newsletters = array();
|
||||
$prepared_subscribers = array();
|
||||
@ -138,12 +145,13 @@ class SendingQueue {
|
||||
|
||||
function sendNewsletters(
|
||||
$queue, $prepared_subscribers_ids, $prepared_newsletters,
|
||||
$prepared_subscribers, $statistics
|
||||
$prepared_subscribers, $statistics, $extra_params = array()
|
||||
) {
|
||||
// send newsletter
|
||||
$send_result = $this->mailer_task->send(
|
||||
$prepared_newsletters,
|
||||
$prepared_subscribers
|
||||
$prepared_subscribers,
|
||||
$extra_params
|
||||
);
|
||||
// log error message and schedule retry/pause sending
|
||||
if($send_result['response'] === false) {
|
||||
@ -172,6 +180,33 @@ class SendingQueue {
|
||||
MailerLog::enforceExecutionRequirements();
|
||||
}
|
||||
|
||||
protected function getExtraParams($queue, $prepared_subscribers_ids) {
|
||||
$subscriber_id = $prepared_subscribers_ids[0];
|
||||
$subscriber = SubscriberModel::where('id', $subscriber_id)->findOne();
|
||||
|
||||
if((boolean)Setting::getValue('tracking.enabled')) {
|
||||
$link_hash = NewsletterLink::where('queue_id', $queue->id)
|
||||
->where('url', '[link:subscription_unsubscribe_url]')
|
||||
->findOne()
|
||||
->hash;
|
||||
$data = Links::createUrlDataObject(
|
||||
$subscriber_id,
|
||||
$subscriber->email,
|
||||
$queue->id,
|
||||
$link_hash,
|
||||
false
|
||||
);
|
||||
$url = Router::buildRequest(
|
||||
Track::ENDPOINT,
|
||||
Track::ACTION_CLICK,
|
||||
$data
|
||||
);
|
||||
} else {
|
||||
$url = Url::getUnsubscribeUrl($subscriber);
|
||||
}
|
||||
return array('unsubscribe_url' => $url);
|
||||
}
|
||||
|
||||
static function getRunningQueues() {
|
||||
return SendingQueueModel::orderByAsc('priority')
|
||||
->whereNull('deleted_at')
|
||||
@ -179,4 +214,4 @@ class SendingQueue {
|
||||
->whereNull('type')
|
||||
->findMany();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
|
||||
|
||||
use MailPoet\Mailer\Mailer as MailerFactory;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Subscription\Url;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
|
||||
@ -54,10 +55,11 @@ class Mailer {
|
||||
return $this->mailer->formatSubscriberNameAndEmailAddress($subscriber);
|
||||
}
|
||||
|
||||
function send($prepared_newsletters, $prepared_subscribers) {
|
||||
function send($prepared_newsletters, $prepared_subscribers, $extra_params = array()) {
|
||||
return $this->mailer->mailer_instance->send(
|
||||
$prepared_newsletters,
|
||||
$prepared_subscribers
|
||||
$prepared_subscribers,
|
||||
$extra_params
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user