From 55bfd79943f85fcef8c9e0b417f3513f0df5e704 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Fri, 6 May 2016 15:05:46 -0400 Subject: [PATCH] Improve GenericPhpValetDriver, remove unnecessary check in WP driver --- drivers/GenericPhpValetDriver.php | 52 ++++++++++++++++++++++++++----- drivers/WordPressValetDriver.php | 3 +- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/drivers/GenericPhpValetDriver.php b/drivers/GenericPhpValetDriver.php index 498c850..01ed75f 100644 --- a/drivers/GenericPhpValetDriver.php +++ b/drivers/GenericPhpValetDriver.php @@ -28,7 +28,7 @@ public function isStaticFile($sitePath, $siteName, $uri) { if (file_exists($staticFilePath = $sitePath.'/public'.$uri)) { return $staticFilePath; - } elseif (file_exists($staticFilePath = $sitePath.$uri)) { + } elseif (file_exists($staticFilePath = $sitePath.$uri) && ! is_dir($staticFilePath)) { return $staticFilePath; } @@ -45,14 +45,50 @@ public function isStaticFile($sitePath, $siteName, $uri) */ public function frontControllerPath($sitePath, $siteName, $uri) { - if (file_exists($frontControllerPath = $sitePath.'/public/index.php')) { - $_SERVER['SCRIPT_FILENAME'] = $sitePath.'/public/index.php'; - $_SERVER['SCRIPT_NAME'] = '/index.php'; - } elseif (file_exists($frontControllerPath = $sitePath.'/index.php')) { - $_SERVER['SCRIPT_FILENAME'] = $sitePath.'/index.php'; - $_SERVER['SCRIPT_NAME'] = '/index.php'; + $candidates = [ + $this->asActualFile($sitePath, $uri), + $this->asIndexFileInDirectory($sitePath, $uri), + ]; + + foreach ($candidates as $candidate) { + if ($this->isActualFile($candidate)) { + $_SERVER['SCRIPT_FILENAME'] = $candidate; + $_SERVER['SCRIPT_NAME'] = str_replace($sitePath, '', $candidate); + return $candidate; + } } - return $frontControllerPath; + $candidates = [ + $this->asPublicIndexFile($sitePath, $uri), + // ...and other possible public prefixes + ]; + + foreach ($candidates as $candidate) { + if ($this->isActualFile($candidate)) { + $_SERVER['SCRIPT_FILENAME'] = $candidate; + $_SERVER['SCRIPT_NAME'] = '/index.php'; + return $candidate; + } + } + } + + protected function isActualFile($path) + { + return file_exists($path) && ! is_dir($path); + } + + protected function asActualFile($sitePath, $uri) + { + return $sitePath.$uri; + } + + protected function asIndexFileInDirectory($sitePath, $uri) + { + return $sitePath.rtrim($uri, '/').'/index.php'; + } + + protected function asPublicIndexFile($sitePath, $uri) + { + return $sitePath.'/public/index.php'; } } diff --git a/drivers/WordPressValetDriver.php b/drivers/WordPressValetDriver.php index cef132a..d039fff 100644 --- a/drivers/WordPressValetDriver.php +++ b/drivers/WordPressValetDriver.php @@ -26,8 +26,7 @@ public function serves($sitePath, $siteName, $uri) public function isStaticFile($sitePath, $siteName, $uri) { if (file_exists($sitePath.$uri) && - ! is_dir($sitePath.$uri) && - pathinfo($sitePath.$uri)['extension'] != 'php') { + ! is_dir($sitePath.$uri)) { return $sitePath.$uri; }