Skip to content

Commit c0e2418

Browse files
committed
Check maintenance mode
1 parent 13d6249 commit c0e2418

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

src/Domain/Configuration/Service/Manager/ConfigManager.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ public function __construct(ConfigRepository $configRepository)
1717
$this->configRepository = $configRepository;
1818
}
1919

20+
public function inMaintenanceMode(): bool
21+
{
22+
$config = $this->getByItem('maintenancemode');
23+
return $config?->getValue() === '1';
24+
}
25+
2026
/**
2127
* Get a configuration item by its key
2228
*/

src/Domain/Messaging/Command/ProcessQueueCommand.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpList\Core\Domain\Messaging\Command;
66

77
use DateTimeImmutable;
8+
use PhpList\Core\Domain\Configuration\Service\Manager\ConfigManager;
89
use PhpList\Core\Domain\Messaging\Model\Message\MessageStatus;
910
use PhpList\Core\Domain\Messaging\Repository\MessageRepository;
1011
use PhpList\Core\Domain\Messaging\Service\MessageProcessingPreparator;
@@ -26,18 +27,21 @@ class ProcessQueueCommand extends Command
2627
private LockFactory $lockFactory;
2728
private MessageProcessingPreparator $messagePreparator;
2829
private CampaignProcessor $campaignProcessor;
30+
private ConfigManager $configManager;
2931

3032
public function __construct(
3133
MessageRepository $messageRepository,
3234
LockFactory $lockFactory,
3335
MessageProcessingPreparator $messagePreparator,
3436
CampaignProcessor $campaignProcessor,
37+
ConfigManager $configManager
3538
) {
3639
parent::__construct();
3740
$this->messageRepository = $messageRepository;
3841
$this->lockFactory = $lockFactory;
3942
$this->messagePreparator = $messagePreparator;
4043
$this->campaignProcessor = $campaignProcessor;
44+
$this->configManager = $configManager;
4145
}
4246

4347
/**
@@ -52,6 +56,12 @@ protected function execute(InputInterface $input, OutputInterface $output): int
5256
return Command::FAILURE;
5357
}
5458

59+
if ($this->configManager->inMaintenanceMode()) {
60+
$output->writeln('The system is in maintenance mode, stopping. Try again later.');
61+
62+
return Command::FAILURE;
63+
}
64+
5565
try {
5666
$this->messagePreparator->ensureSubscribersHaveUuid($output);
5767
$this->messagePreparator->ensureCampaignsHaveUuid($output);

tests/Unit/Domain/Messaging/Command/ProcessQueueCommandTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace PhpList\Core\Tests\Unit\Domain\Messaging\Command;
66

77
use Exception;
8+
use PhpList\Core\Domain\Configuration\Service\Manager\ConfigManager;
89
use PhpList\Core\Domain\Messaging\Command\ProcessQueueCommand;
910
use PhpList\Core\Domain\Messaging\Model\Message;
1011
use PhpList\Core\Domain\Messaging\Repository\MessageRepository;
@@ -41,7 +42,8 @@ protected function setUp(): void
4142
$this->messageRepository,
4243
$lockFactory,
4344
$this->messageProcessingPreparator,
44-
$this->campaignProcessor
45+
$this->campaignProcessor,
46+
$this->createMock(ConfigManager::class),
4547
);
4648

4749
$application = new Application();

0 commit comments

Comments
 (0)