silverstripe-framework/src/Control/Middleware/FlushMiddleware.php

34 lines
980 B
PHP
Raw Normal View History

<?php
namespace SilverStripe\Control\Middleware;
use SilverStripe\Control\HTTPRequest;
2022-11-15 06:20:54 +01:00
use SilverStripe\Core\BaseKernel;
use SilverStripe\Core\ClassInfo;
use SilverStripe\Core\Flushable;
2022-11-15 06:20:54 +01:00
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Core\Kernel;
/**
* Triggers a call to flush() on all implementors of Flushable.
*/
class FlushMiddleware implements HTTPMiddleware
2016-11-29 00:31:16 +01:00
{
public function process(HTTPRequest $request, callable $delegate)
2016-11-29 00:31:16 +01:00
{
2022-11-15 06:20:54 +01:00
/** @var BaseKernel $kernel */
$kernel = Injector::inst()->get(Kernel::class);
if ((method_exists($kernel, 'isFlushed') && $kernel->isFlushed())) {
// Disable cache when flushing
HTTPCacheControlMiddleware::singleton()->disableCache(true);
foreach (ClassInfo::implementorsOf(Flushable::class) as $class) {
/** @var Flushable|string $class */
2016-11-29 00:31:16 +01:00
$class::flush();
}
}
return $delegate($request);
2016-11-29 00:31:16 +01:00
}
}