Permalink
Browse files

Merge remote branch 'bar/envfix' into 1.3

  • Loading branch information...
2 parents 5f612b7 + 8d15ba5 commit 459e2ef1b01fa0cd9fa4bb5a7c652be7e75f2aa6 @markstory markstory committed Jan 14, 2011
Showing with 34 additions and 9 deletions.
  1. +15 −8 cake/basics.php
  2. +19 −1 cake/tests/cases/basics.test.php
View
@@ -446,7 +446,7 @@ function env($key) {
if (defined('SERVER_IIS') && SERVER_IIS === true) {
return str_replace('\\\\', '\\', env('PATH_TRANSLATED'));
}
- break;
+ break;
case 'DOCUMENT_ROOT':
$name = env('SCRIPT_NAME');
$filename = env('SCRIPT_FILENAME');
@@ -455,20 +455,27 @@ function env($key) {
$offset = 4;
}
return substr($filename, 0, strlen($filename) - (strlen($name) + $offset));
- break;
+ break;
case 'PHP_SELF':
return str_replace(env('DOCUMENT_ROOT'), '', env('SCRIPT_FILENAME'));
- break;
+ break;
case 'CGI_MODE':
return (PHP_SAPI === 'cgi');
- break;
+ break;
case 'HTTP_BASE':
$host = env('HTTP_HOST');
- if (substr_count($host, '.') !== 1) {
- return preg_replace('/^([^.])*/i', null, env('HTTP_HOST'));
+ $count = substr_count($host, '.');
+ if ($count <= 1) {
+ return '.' . $host;
+ } elseif ($count === 2) {
+ $gTLD = array('aero', 'asia', 'biz', 'cat', 'com', 'coop', 'edu', 'gov', 'info', 'int', 'jobs', 'mil', 'mobi', 'museum', 'name', 'net', 'org', 'pro', 'tel', 'travel', 'xxx');
+ $domainName = explode('.', $host);
+ if (in_array($domainName[1], $gTLD)) {
+ $host = '.' . $host;
+ }
}
- return '.' . $host;
- break;
+ return preg_replace('/^([^.])*/i', null, $host);
+ break;
}
return null;
}
@@ -96,7 +96,13 @@ function testEnv() {
$__ENV = $_ENV;
$_SERVER['HTTP_HOST'] = 'localhost';
- $this->assertEqual(env('HTTP_BASE'), '');
+ $this->assertEqual(env('HTTP_BASE'), '.localhost');
+
+ $_SERVER['HTTP_HOST'] = 'com.ar';
+ $this->assertEqual(env('HTTP_BASE'), '.com.ar');
+
+ $_SERVER['HTTP_HOST'] = 'example.ar';
+ $this->assertEqual(env('HTTP_BASE'), '.example.ar');
$_SERVER['HTTP_HOST'] = 'example.com';
$this->assertEqual(env('HTTP_BASE'), '.example.com');
@@ -107,9 +113,21 @@ function testEnv() {
$_SERVER['HTTP_HOST'] = 'subdomain.example.com';
$this->assertEqual(env('HTTP_BASE'), '.example.com');
+ $_SERVER['HTTP_HOST'] = 'example.com.ar';
+ $this->assertEqual(env('HTTP_BASE'), '.example.com.ar');
+
+ $_SERVER['HTTP_HOST'] = 'www.example.com.ar';
+ $this->assertEqual(env('HTTP_BASE'), '.example.com.ar');
+
+ $_SERVER['HTTP_HOST'] = 'subdomain.example.com.ar';
+ $this->assertEqual(env('HTTP_BASE'), '.example.com.ar');
+
$_SERVER['HTTP_HOST'] = 'double.subdomain.example.com';
$this->assertEqual(env('HTTP_BASE'), '.subdomain.example.com');
+ $_SERVER['HTTP_HOST'] = 'double.subdomain.example.com.ar';
+ $this->assertEqual(env('HTTP_BASE'), '.subdomain.example.com.ar');
+
$_SERVER = $_ENV = array();
$_SERVER['SCRIPT_NAME'] = '/a/test/test.php';

0 comments on commit 459e2ef

Please sign in to comment.