Expand System Info report with sending queue status
[MAILPOET-6378]
This commit is contained in:
committed by
Aschepikov
parent
06532320b5
commit
0d1e141e2f
@@ -4,6 +4,7 @@ namespace MailPoet\SystemReport;
|
||||
|
||||
use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Router\Endpoints\CronDaemon;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
@@ -76,6 +77,9 @@ class SystemReportCollector {
|
||||
$cronPingResponse = __("Can't ping cron URL", 'mailpoet') . ' (' . $e->getMessage() . ')';
|
||||
}
|
||||
|
||||
$mailerLog = MailerLog::getMailerLog();
|
||||
$mailerLog['sent'] = MailerLog::sentSince();
|
||||
|
||||
// the HelpScout Beacon API has a limit of 20 attribute-value pairs (https://developer.helpscout.com/beacon-2/web/javascript-api/#beacon-session-data)
|
||||
return [
|
||||
'PHP version' => PHP_VERSION,
|
||||
@@ -127,10 +131,23 @@ class SystemReportCollector {
|
||||
'Total number of subscribers' => $this->subscribersFeature->getSubscribersCount(),
|
||||
'Plugin installed at' => $this->settings->get('installed_at'),
|
||||
'Installed via WooCommerce onboarding wizard' => $this->wooCommerceHelper->wasMailPoetInstalledViaWooCommerceOnboardingWizard(),
|
||||
'Sending queue status' => $this->formatCompositeField([
|
||||
'Status' => $mailerLog['status'] ?? 'Unknown',
|
||||
'Started at' => isset($mailerLog['started']) ? date('Y-m-d H:i:s', $mailerLog['started']) : 'Unknown',
|
||||
'Emails sent' => $mailerLog['sent'],
|
||||
'Retry attempts' => $mailerLog['retry_attempt'] ?? 0,
|
||||
'Last seen error' => isset($mailerLog['error'])
|
||||
? $mailerLog['error']['error_message'] . ' (' . $mailerLog['error']['operation'] . ')'
|
||||
: 'None',
|
||||
]),
|
||||
];
|
||||
}
|
||||
|
||||
private function formatCompositeField($fields) {
|
||||
if (empty($fields)) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return implode(' - ', array_map(function ($key, $value) {
|
||||
return $key . ': ' . $value;
|
||||
}, array_keys($fields), array_values($fields)));
|
||||
|
@@ -4,6 +4,7 @@ namespace MailPoet\Test\SystemReport;
|
||||
|
||||
use MailPoet\Cron\CronHelper;
|
||||
use MailPoet\Entities\SubscriberEntity;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Services\Bridge;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\SystemReport\SystemReportCollector;
|
||||
@@ -214,4 +215,26 @@ class SystemReportCollectorTest extends \MailPoetTest {
|
||||
verify($subjectField)->stringContainsString('Last run end: Unknown');
|
||||
verify($subjectField)->stringContainsString('Last seen error: None');
|
||||
}
|
||||
|
||||
public function testItReturnsSendingQueueStatus() {
|
||||
$mailerLog = MailerLog::createMailerLog();
|
||||
MailerLog::resumeSending();
|
||||
|
||||
try {
|
||||
MailerLog::processError($operation = 'send', $error = 'email rejected');
|
||||
} catch (\Exception $e) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
$systemInfoData = $this->diContainer->get(SystemReportCollector::class)->getData();
|
||||
$subjectField = $systemInfoData['Sending queue status'];
|
||||
verify($subjectField)->stringContainsString('Started at: ' . date('Y-m-d')); // ignoring time segment
|
||||
verify($subjectField)->stringContainsString('Retry attempts: 1');
|
||||
verify($subjectField)->stringContainsString("Last seen error: $error ($operation)"); // @phpstan-ignore-line
|
||||
|
||||
MailerLog::pauseSending($mailerLog);
|
||||
$systemInfoData = $this->diContainer->get(SystemReportCollector::class)->getData();
|
||||
$subjectField = $systemInfoData['Sending queue status'];
|
||||
verify($subjectField)->stringContainsString('Status: ' . MailerLog::STATUS_PAUSED);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user