mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
BUGFIX: add Director::isDev parameter so we can test if we know we're dev mode already without touching the database. Used in showqueries on MySQL, so that errors are avoided when showing queries on initial switch to dev move (#6856)
This commit is contained in:
parent
7c4bc36a9b
commit
627708e3a8
@ -802,19 +802,31 @@ class Director implements TemplateGlobalProvider {
|
||||
/**
|
||||
* This function will return true if the site is in a development environment.
|
||||
* For information about environment types, see {@link Director::set_environment_type()}.
|
||||
* @param $dontTouchDB If true, the database checks are not performed, which allows certain DB checks
|
||||
* to not fail before the DB is ready. If false (default), DB checks are included.
|
||||
*/
|
||||
static function isDev() {
|
||||
static function isDev($dontTouchDB = false) {
|
||||
// This variable is used to supress repetitions of the isDev security message below.
|
||||
static $firstTimeCheckingGetVar = true;
|
||||
|
||||
$result = false;
|
||||
|
||||
if(isset($_SESSION['isDev']) && $_SESSION['isDev']) $result = true;
|
||||
if(self::$environment_type && self::$environment_type == 'dev') $result = true;
|
||||
|
||||
if(!empty(Director::$dev_servers)) {
|
||||
Deprecation::notice('3.0', 'Director::$dev_servers doesn\'t work anymore');
|
||||
}
|
||||
|
||||
// Use ?isDev=1 to get development access on the live server
|
||||
if(isset($_GET['isDev'])) {
|
||||
if(!$dontTouchDB && !$result && isset($_GET['isDev'])) {
|
||||
if(Security::database_is_ready()) {
|
||||
if($firstTimeCheckingGetVar && !Permission::check('ADMIN')){
|
||||
BasicAuth::requireLogin("SilverStripe developer access. Use your CMS login", "ADMIN");
|
||||
}
|
||||
$_SESSION['isDev'] = $_GET['isDev'];
|
||||
if($firstTimeCheckingGetVar) $firstTimeCheckingGetVar = false;
|
||||
$firstTimeCheckingGetVar = false;
|
||||
$result = $_GET['isDev'];
|
||||
} else {
|
||||
if($firstTimeCheckingGetVar && DB::connection_attempted()) {
|
||||
echo "<p style=\"padding: 3px; margin: 3px; background-color: orange;
|
||||
@ -826,16 +838,7 @@ class Director implements TemplateGlobalProvider {
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($_SESSION['isDev']) && $_SESSION['isDev']) return true;
|
||||
|
||||
if(self::$environment_type) return self::$environment_type == 'dev';
|
||||
|
||||
// Check if we are running on one of the development servers
|
||||
if(isset($_SERVER['HTTP_HOST']) && in_array($_SERVER['HTTP_HOST'], Director::$dev_servers)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -109,13 +109,13 @@ class MySQLDatabase extends SS_Database {
|
||||
return;
|
||||
}
|
||||
|
||||
if(isset($_REQUEST['showqueries'])) {
|
||||
if(isset($_REQUEST['showqueries']) && Director::isDev(true)) {
|
||||
$starttime = microtime(true);
|
||||
}
|
||||
|
||||
$handle = $this->dbConn->query($sql);
|
||||
|
||||
if(isset($_REQUEST['showqueries'])) {
|
||||
if(isset($_REQUEST['showqueries']) && Director::isDev(true)) {
|
||||
$endtime = round(microtime(true) - $starttime,4);
|
||||
Debug::message("\n$sql\n{$endtime}ms\n", false);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user