Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

bugfix for 6856, isDev=1&showqueries going into infinite loop #218

Merged
merged 1 commit into from

2 participants

Mark Stephens Sam Minnée
Mark Stephens

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)

Mark Stephens mrmorphic 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)
627708e
Sam Minnée sminnee merged commit e307594 into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Mar 9, 2012
  1. Mark Stephens

    BUGFIX: add Director::isDev parameter so we can test if we know we're…

    mrmorphic authored
    … 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 page is out of date. Refresh to see the latest.
Showing with 18 additions and 15 deletions.
  1. +16 −13 control/Director.php
  2. +2 −2 model/MySQLDatabase.php
29 control/Director.php
View
@@ -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;
}
/**
4 model/MySQLDatabase.php
View
@@ -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);
}
Something went wrong with that request. Please try again.