mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
ENH Do not rely on flush variable
This commit is contained in:
parent
662ac9d1f9
commit
b1b469a874
@ -2,7 +2,6 @@
|
||||
|
||||
namespace SilverStripe\Control\Middleware\URLSpecialsMiddleware;
|
||||
|
||||
use SilverStripe\Core\BaseKernel;
|
||||
use SilverStripe\Core\Kernel;
|
||||
use SilverStripe\Core\Injector\Injector;
|
||||
use SilverStripe\Core\Startup\ScheduledFlushDiscoverer;
|
||||
@ -28,15 +27,13 @@ trait FlushScheduler
|
||||
*/
|
||||
public function scheduleFlush(HTTPRequest $request)
|
||||
{
|
||||
$flush = array_key_exists('flush', $request->getVars() ?? []) || ($request->getURL() === 'dev/build');
|
||||
|
||||
$kernel = Injector::inst()->get(Kernel::class);
|
||||
if (!$flush || (method_exists($kernel, 'isFlushed') && $kernel->isFlushed())) {
|
||||
return false;
|
||||
if ($request->getURL() === 'dev/build') {
|
||||
$kernel = Injector::inst()->get(Kernel::class);
|
||||
if (!$kernel->isFlushed()) {
|
||||
ScheduledFlushDiscoverer::scheduleFlush($kernel);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
ScheduledFlushDiscoverer::scheduleFlush($kernel);
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,6 @@ class RequestFlushDiscoverer implements FlushDiscoverer
|
||||
/**
|
||||
* Checks whether the request contains any flush indicators
|
||||
*
|
||||
*
|
||||
* @return null|bool flush or don't care
|
||||
*/
|
||||
protected function lookupRequest()
|
||||
|
@ -6,6 +6,7 @@ use InvalidArgumentException;
|
||||
use Psr\SimpleCache\CacheInterface;
|
||||
use SilverStripe\Core\Injector\Injector;
|
||||
use SilverStripe\Core\Flushable;
|
||||
use SilverStripe\Core\Kernel;
|
||||
|
||||
/**
|
||||
* This class keeps track of the available database adapters
|
||||
@ -155,8 +156,8 @@ class DatabaseAdapterRegistry implements Flushable
|
||||
*/
|
||||
protected static function getConfigureDatabasePaths(): array
|
||||
{
|
||||
// autoconfigure() will get called before flush() on ?flush, so manually flush just to ensure no weirdness
|
||||
if (isset($_GET['flush'])) {
|
||||
// autoconfigure() will get called before flush() on flush, so manually flush just to ensure no weirdness
|
||||
if (Injector::inst()->get(Kernel::class)->isFlushed()) {
|
||||
static::flush();
|
||||
}
|
||||
try {
|
||||
|
@ -5,6 +5,8 @@ namespace SilverStripe\View;
|
||||
use SilverStripe\Core\Config\Config;
|
||||
use SilverStripe\ORM\FieldType\DBField;
|
||||
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.
|
||||
@ -60,7 +62,7 @@ class SSViewer_FromString extends SSViewer
|
||||
$hash = sha1($this->content ?? '');
|
||||
$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");
|
||||
$fh = fopen($cacheFile ?? '', 'w');
|
||||
fwrite($fh, $content ?? '');
|
||||
|
Loading…
Reference in New Issue
Block a user