ENH Do not rely on flush variable

This commit is contained in:
Steve Boyd 2024-10-22 19:09:42 +13:00
parent 662ac9d1f9
commit b1b469a874
4 changed files with 13 additions and 14 deletions

View File

@ -2,7 +2,6 @@
namespace SilverStripe\Control\Middleware\URLSpecialsMiddleware; namespace SilverStripe\Control\Middleware\URLSpecialsMiddleware;
use SilverStripe\Core\BaseKernel;
use SilverStripe\Core\Kernel; use SilverStripe\Core\Kernel;
use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Injector\Injector;
use SilverStripe\Core\Startup\ScheduledFlushDiscoverer; use SilverStripe\Core\Startup\ScheduledFlushDiscoverer;
@ -28,15 +27,13 @@ trait FlushScheduler
*/ */
public function scheduleFlush(HTTPRequest $request) public function scheduleFlush(HTTPRequest $request)
{ {
$flush = array_key_exists('flush', $request->getVars() ?? []) || ($request->getURL() === 'dev/build'); if ($request->getURL() === 'dev/build') {
$kernel = Injector::inst()->get(Kernel::class); $kernel = Injector::inst()->get(Kernel::class);
if (!$flush || (method_exists($kernel, 'isFlushed') && $kernel->isFlushed())) { if (!$kernel->isFlushed()) {
return false;
}
ScheduledFlushDiscoverer::scheduleFlush($kernel); ScheduledFlushDiscoverer::scheduleFlush($kernel);
return true; return true;
} }
}
return false;
}
} }

View File

@ -44,7 +44,6 @@ class RequestFlushDiscoverer implements FlushDiscoverer
/** /**
* Checks whether the request contains any flush indicators * Checks whether the request contains any flush indicators
* *
*
* @return null|bool flush or don't care * @return null|bool flush or don't care
*/ */
protected function lookupRequest() protected function lookupRequest()

View File

@ -6,6 +6,7 @@ use InvalidArgumentException;
use Psr\SimpleCache\CacheInterface; use Psr\SimpleCache\CacheInterface;
use SilverStripe\Core\Injector\Injector; use SilverStripe\Core\Injector\Injector;
use SilverStripe\Core\Flushable; use SilverStripe\Core\Flushable;
use SilverStripe\Core\Kernel;
/** /**
* This class keeps track of the available database adapters * This class keeps track of the available database adapters
@ -155,8 +156,8 @@ class DatabaseAdapterRegistry implements Flushable
*/ */
protected static function getConfigureDatabasePaths(): array protected static function getConfigureDatabasePaths(): array
{ {
// autoconfigure() will get called before flush() on ?flush, so manually flush just to ensure no weirdness // autoconfigure() will get called before flush() on flush, so manually flush just to ensure no weirdness
if (isset($_GET['flush'])) { if (Injector::inst()->get(Kernel::class)->isFlushed()) {
static::flush(); static::flush();
} }
try { try {

View File

@ -5,6 +5,8 @@ namespace SilverStripe\View;
use SilverStripe\Core\Config\Config; use SilverStripe\Core\Config\Config;
use SilverStripe\ORM\FieldType\DBField; use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\Dev\Deprecation; use SilverStripe\Dev\Deprecation;
use SilverStripe\Core\Injector\Injector;
use SilverStripe\Core\Kernel;
/** /**
* Special SSViewer that will process a template passed as a string, rather than a filename. * Special SSViewer that will process a template passed as a string, rather than a filename.
@ -60,7 +62,7 @@ class SSViewer_FromString extends SSViewer
$hash = sha1($this->content ?? ''); $hash = sha1($this->content ?? '');
$cacheFile = TEMP_PATH . DIRECTORY_SEPARATOR . ".cache.$hash"; $cacheFile = TEMP_PATH . DIRECTORY_SEPARATOR . ".cache.$hash";
if (!file_exists($cacheFile ?? '') || isset($_GET['flush'])) { if (!file_exists($cacheFile ?? '') || Injector::inst()->get(Kernel::class)->isFlushed()) {
$content = $this->parseTemplateContent($this->content, "string sha1=$hash"); $content = $this->parseTemplateContent($this->content, "string sha1=$hash");
$fh = fopen($cacheFile ?? '', 'w'); $fh = fopen($cacheFile ?? '', 'w');
fwrite($fh, $content ?? ''); fwrite($fh, $content ?? '');