Adding List-Unsubscribe to header of newsletters

This commit is contained in:
Amine Ben hammou
2017-04-15 16:32:37 +00:00
parent 53169bba78
commit 771a1bfc44
3 changed files with 49 additions and 9 deletions

View File

@@ -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();
}
}
}