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
|
||||
namespace MailPoet\API\Endpoints;
|
||||
|
||||
use MailPoet\API\Endpoint as APIEndpoint;
|
||||
use MailPoet\API\Error as APIError;
|
||||
use MailPoet\Mailer\Mailer as MailerConfig;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Services\Bridge;
|
||||
|
||||
@@ -16,17 +18,17 @@ class Settings extends APIEndpoint {
|
||||
if(empty($settings)) {
|
||||
return $this->badRequest(array(
|
||||
APIError::BAD_REQUEST =>
|
||||
__("You have not specified any settings to be saved.", 'mailpoet')
|
||||
__('You have not specified any settings to be saved.', 'mailpoet')
|
||||
));
|
||||
} else {
|
||||
foreach($settings as $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 = 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);
|
||||
}
|
||||
return $this->successResponse(Setting::getAll());
|
||||
|
@@ -89,6 +89,8 @@ class MailerLog {
|
||||
|
||||
static function incrementSentCount() {
|
||||
$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.
|
||||
if($mailer_log['error']) {
|
||||
$mailer_log = self::clearSendingErrorLog($mailer_log);
|
||||
@@ -110,9 +112,9 @@ class MailerLog {
|
||||
if($mailer_config['method'] === Mailer::METHOD_MAILPOET) return false;
|
||||
$mailer_log = self::getMailerLog($mailer_log);
|
||||
$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;
|
||||
// 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();
|
||||
}
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user