• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / typo3-warming / 17710663153

14 Sep 2025 11:40AM UTC coverage: 90.136% (-2.6%) from 92.759%
17710663153

Pull #959

github

eliashaeussler
[FEATURE] Run cache warmup after DataHandler cache clear
Pull Request #959: [FEATURE] Run cache warmup after DataHandler cache clear

21 of 83 new or added lines in 3 files covered. (25.3%)

1718 of 1906 relevant lines covered (90.14%)

13.09 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

27.59
/Classes/Middleware/ProcessCacheWarmupQueueMiddleware.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the TYPO3 CMS extension "warming".
7
 *
8
 * Copyright (C) 2021-2025 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 2 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\Typo3Warming\Middleware;
25

26
use EliasHaeussler\Typo3Warming\Configuration;
27
use EliasHaeussler\Typo3Warming\Enums;
28
use EliasHaeussler\Typo3Warming\Queue;
29
use EliasHaeussler\Typo3Warming\Result;
30
use EliasHaeussler\Typo3Warming\ValueObject;
31
use Psr\Http\Message;
32
use Psr\Http\Server;
33
use TYPO3\CMS\Core;
34

35
/**
36
 * ProcessCacheWarmupQueueMiddleware
37
 *
38
 * @author Elias Häußler <elias@haeussler.dev>
39
 * @license GPL-2.0-or-later
40
 * @internal
41
 */
42
final readonly class ProcessCacheWarmupQueueMiddleware implements Server\MiddlewareInterface
43
{
44
    private Result\ResultNotificationBuilder $resultNotificationBuilder;
45

46
    public function __construct(
38✔
47
        private Core\Messaging\FlashMessageService $flashMessageService,
48
        private Queue\CacheWarmupQueue $queue,
49
    ) {
50
        $this->resultNotificationBuilder = new Result\ResultNotificationBuilder();
38✔
51
    }
52

53
    public function process(
38✔
54
        Message\ServerRequestInterface $request,
55
        Server\RequestHandlerInterface $handler,
56
    ): Message\ResponseInterface {
57
        $response = $handler->handle($request);
38✔
58

59
        try {
60
            $cacheWarmupRequest = $this->queue->wrapInWarmupRequest();
38✔
61
            $cacheWarmupResult = $this->queue->process();
38✔
62

63
            if ($cacheWarmupResult !== null) {
38✔
NEW
64
                $this->enqueueFlashMessage($cacheWarmupRequest, $cacheWarmupResult);
×
65
            }
NEW
66
        } catch (\Throwable) {
×
67
            // Avoid treating the whole request as failed if cache warmup fails
68
        }
69

70
        return $response;
38✔
71
    }
72

NEW
73
    private function enqueueFlashMessage(ValueObject\Request\WarmupRequest $request, Result\CacheWarmupResult $result): void
×
74
    {
NEW
75
        $messages = $this->resultNotificationBuilder->buildMessages($request, $result);
×
NEW
76
        $state = Enums\WarmupState::fromCacheWarmupResult($result);
×
77

NEW
78
        $flashMessageQueue = $this->flashMessageService->getMessageQueueByIdentifier(
×
NEW
79
            Core\Messaging\FlashMessageQueue::NOTIFICATION_QUEUE,
×
NEW
80
        );
×
NEW
81
        $flashMessage = Core\Utility\GeneralUtility::makeInstance(
×
NEW
82
            Core\Messaging\FlashMessage::class,
×
NEW
83
            implode(PHP_EOL, $messages),
×
NEW
84
            Configuration\Localization::translate('notification.message.title'),
×
NEW
85
            match ($state) {
×
NEW
86
                Enums\WarmupState::Failed => Core\Type\ContextualFeedbackSeverity::ERROR,
×
NEW
87
                Enums\WarmupState::Success => Core\Type\ContextualFeedbackSeverity::OK,
×
NEW
88
                Enums\WarmupState::Unknown => Core\Type\ContextualFeedbackSeverity::NOTICE,
×
NEW
89
                Enums\WarmupState::Warning => Core\Type\ContextualFeedbackSeverity::WARNING,
×
NEW
90
            },
×
NEW
91
            true,
×
NEW
92
        );
×
NEW
93
        $flashMessageQueue->enqueue($flashMessage);
×
94
    }
95
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc