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;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
@ -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 {
|
||||||
|
@ -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 ?? '');
|
||||||
|
Loading…
Reference in New Issue
Block a user