Fixes sending limit not being enforced when email frequency limit is
changed to a lesser value OR when it is changed while sending is in progress
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\API\Endpoints;
|
namespace MailPoet\API\Endpoints;
|
||||||
|
|
||||||
use MailPoet\API\Endpoint as APIEndpoint;
|
use MailPoet\API\Endpoint as APIEndpoint;
|
||||||
use MailPoet\API\Error as APIError;
|
use MailPoet\API\Error as APIError;
|
||||||
|
use MailPoet\Mailer\Mailer as MailerConfig;
|
||||||
use MailPoet\Models\Setting;
|
use MailPoet\Models\Setting;
|
||||||
use MailPoet\Services\Bridge;
|
use MailPoet\Services\Bridge;
|
||||||
|
|
||||||
@@ -16,20 +18,20 @@ class Settings extends APIEndpoint {
|
|||||||
if(empty($settings)) {
|
if(empty($settings)) {
|
||||||
return $this->badRequest(array(
|
return $this->badRequest(array(
|
||||||
APIError::BAD_REQUEST =>
|
APIError::BAD_REQUEST =>
|
||||||
__("You have not specified any settings to be saved.", 'mailpoet')
|
__('You have not specified any settings to be saved.', 'mailpoet')
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
foreach($settings as $name => $value) {
|
foreach($settings as $name => $value) {
|
||||||
Setting::setValue($name, $value);
|
Setting::setValue($name, $value);
|
||||||
}
|
}
|
||||||
if(!empty($settings['mta']['mailpoet_api_key'])
|
if(!empty($settings[MailerConfig::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key'])
|
||||||
&& Bridge::isMPSendingServiceEnabled()
|
&& Bridge::isMPSendingServiceEnabled()
|
||||||
) {
|
) {
|
||||||
$bridge = new Bridge();
|
$bridge = new Bridge();
|
||||||
$result = $bridge->checkKey($settings['mta']['mailpoet_api_key']);
|
$result = $bridge->checkKey($settings[MailerConfig::MAILER_CONFIG_SETTING_NAME]['mailpoet_api_key']);
|
||||||
$bridge->updateSubscriberCount($result);
|
$bridge->updateSubscriberCount($result);
|
||||||
}
|
}
|
||||||
return $this->successResponse(Setting::getAll());
|
return $this->successResponse(Setting::getAll());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -89,6 +89,8 @@ class MailerLog {
|
|||||||
|
|
||||||
static function incrementSentCount() {
|
static function incrementSentCount() {
|
||||||
$mailer_log = self::getMailerLog();
|
$mailer_log = self::getMailerLog();
|
||||||
|
// do not increment count if sending limit is reached
|
||||||
|
if(self::isSendingLimitReached($mailer_log)) return;
|
||||||
// clear previous retry count, errors, etc.
|
// clear previous retry count, errors, etc.
|
||||||
if($mailer_log['error']) {
|
if($mailer_log['error']) {
|
||||||
$mailer_log = self::clearSendingErrorLog($mailer_log);
|
$mailer_log = self::clearSendingErrorLog($mailer_log);
|
||||||
@@ -110,9 +112,9 @@ class MailerLog {
|
|||||||
if($mailer_config['method'] === Mailer::METHOD_MAILPOET) return false;
|
if($mailer_config['method'] === Mailer::METHOD_MAILPOET) return false;
|
||||||
$mailer_log = self::getMailerLog($mailer_log);
|
$mailer_log = self::getMailerLog($mailer_log);
|
||||||
$elapsed_time = time() - (int)$mailer_log['started'];
|
$elapsed_time = time() - (int)$mailer_log['started'];
|
||||||
if($mailer_log['sent'] === $mailer_config['frequency_limit']) {
|
if($mailer_log['sent'] >= $mailer_config['frequency_limit']) {
|
||||||
if($elapsed_time <= $mailer_config['frequency_interval']) return true;
|
if($elapsed_time <= $mailer_config['frequency_interval']) return true;
|
||||||
// reset mailer log if enough time has passed since the limit was reached
|
// reset mailer log as enough time has passed since the limit was reached
|
||||||
self::resetMailerLog();
|
self::resetMailerLog();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
Reference in New Issue
Block a user