Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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)
  • Loading branch information...
commit 627708e3a827e2ad0741131e70b376535a977e61 1 parent 7c4bc36
@mrmorphic mrmorphic authored
Showing with 18 additions and 15 deletions.
  1. +16 −13 control/Director.php
  2. +2 −2 model/MySQLDatabase.php
View
29 control/Director.php
@@ -802,19 +802,31 @@ static function isLive() {
/**
* 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 @@ static function isDev() {
}
}
- 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;
}
/**
View
4 model/MySQLDatabase.php
@@ -109,13 +109,13 @@ public function query($sql, $errorLevel = E_USER_ERROR) {
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);
}
Please sign in to comment.
Something went wrong with that request. Please try again.