From 3890128069bb60b42861153ed469f531f01c52f3 Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 17 Nov 2020 22:04:02 -0700 Subject: [PATCH 1/5] Explicitly setting the request from the request sent back from running the before filters. --- system/CodeIgniter.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system/CodeIgniter.php b/system/CodeIgniter.php index 0579ea2edd3c..f964837149ac 100644 --- a/system/CodeIgniter.php +++ b/system/CodeIgniter.php @@ -407,6 +407,8 @@ protected function handleRequest(?RouteCollectionInterface $routes, Cache $cache { return $returnResponse ? $possibleResponse : $possibleResponse->pretend($this->useSafeOutput)->send(); } + + $this->request = $possibleResponse; } $returned = $this->startController(); From b76df83a32ac15b2f74785e69c677e402eefca09 Mon Sep 17 00:00:00 2001 From: Derek Date: Sat, 12 Dec 2020 15:09:32 -0700 Subject: [PATCH 2/5] Add a protection on the return from a filter to check if it's a request before setting it to the request. --- system/CodeIgniter.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/system/CodeIgniter.php b/system/CodeIgniter.php index f964837149ac..55c84e027e66 100644 --- a/system/CodeIgniter.php +++ b/system/CodeIgniter.php @@ -408,7 +408,10 @@ protected function handleRequest(?RouteCollectionInterface $routes, Cache $cache return $returnResponse ? $possibleResponse : $possibleResponse->pretend($this->useSafeOutput)->send(); } - $this->request = $possibleResponse; + if ($possibleResponse instanceof RequestInterface) + { + $this->request = $possibleResponse; + } } $returned = $this->startController(); From bf3e011a9a67f81e04c7aa98c11fc6c59936ac48 Mon Sep 17 00:00:00 2001 From: Derek Date: Thu, 7 Jan 2021 20:58:17 -0700 Subject: [PATCH 3/5] Fixing phpstan errors --- system/CodeIgniter.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/system/CodeIgniter.php b/system/CodeIgniter.php index 55c84e027e66..ab5c103bd755 100644 --- a/system/CodeIgniter.php +++ b/system/CodeIgniter.php @@ -586,7 +586,6 @@ protected function getRequestObject() return; } - // @phpstan-ignore-next-line if (is_cli() && ENVIRONMENT !== 'testing') { // @codeCoverageIgnoreStart @@ -841,7 +840,6 @@ protected function determinePath() return $this->path; } - // @phpstan-ignore-next-line return (is_cli() && ! (ENVIRONMENT === 'testing')) ? $this->request->getPath() : $this->request->uri->getPath(); } From 8da7f28e455001678a04c229e0a2e013833b87c8 Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 12 Jan 2021 19:01:41 -0700 Subject: [PATCH 4/5] Reverting my previous phpstan changes and changing the request check to fall inline with the type needed in the request property. --- phpstan.neon.dist | 2 ++ system/CodeIgniter.php | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 64d7f74c47b6..781f3db0996c 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -32,10 +32,12 @@ parameters: - '#Access to an undefined property CodeIgniter\\Database\\Forge::\$dropConstraintStr#' - '#Access to an undefined property CodeIgniter\\Database\\BaseConnection::\$mysqli|\$schema#' - '#Access to an undefined property CodeIgniter\\Database\\ConnectionInterface::(\$DBDriver|\$connID|\$likeEscapeStr|\$likeEscapeChar|\$escapeChar|\$protectIdentifiers|\$schema)#' + - '#Access to an undefined property CodeIgniter\\HTTP\\Request::\$uri#' - '#Access to protected property CodeIgniter\\Database\\BaseConnection::(\$DBDebug|\$DBPrefix|\$swapPre|\$charset|\$DBCollat|\$database)#' - '#Call to an undefined method CodeIgniter\\Database\\BaseConnection::_(disable|enable)ForeignKeyChecks\(\)#' - '#Call to an undefined method CodeIgniter\\Database\\BaseConnection::supportsForeignKeys\(\)#' - '#Call to an undefined method CodeIgniter\\Database\\ConnectionInterface::(tableExists|protectIdentifiers|setAliasedTables|escapeIdentifiers|affectedRows|addTableAlias|getIndexData)\(\)#' + - '#Call to an undefined method CodeIgniter\\HTTP\\Request::(getPath|getSegments|getMethod|setLocale|getPost)\(\)#' - '#Call to an undefined method CodeIgniter\\Router\\RouteCollectionInterface::(getDefaultNamespace|isFiltered|getFilterForRoute|getRoutesOptions)\(\)#' - '#Cannot access property [\$a-z_]+ on ((bool\|)?object\|resource)#' - '#Cannot call method [a-zA-Z_]+\(\) on ((bool\|)?object\|resource)#' diff --git a/system/CodeIgniter.php b/system/CodeIgniter.php index ab5c103bd755..1feb20931991 100644 --- a/system/CodeIgniter.php +++ b/system/CodeIgniter.php @@ -408,7 +408,7 @@ protected function handleRequest(?RouteCollectionInterface $routes, Cache $cache return $returnResponse ? $possibleResponse : $possibleResponse->pretend($this->useSafeOutput)->send(); } - if ($possibleResponse instanceof RequestInterface) + if ($possibleResponse instanceof Request) { $this->request = $possibleResponse; } @@ -586,6 +586,7 @@ protected function getRequestObject() return; } + // @phpstan-ignore-next-line if (is_cli() && ENVIRONMENT !== 'testing') { // @codeCoverageIgnoreStart @@ -840,6 +841,7 @@ protected function determinePath() return $this->path; } + // @phpstan-ignore-next-line return (is_cli() && ! (ENVIRONMENT === 'testing')) ? $this->request->getPath() : $this->request->uri->getPath(); } From aae05ab28f3974e3da49051af3f5b5e0afada09a Mon Sep 17 00:00:00 2001 From: Derek Date: Tue, 12 Jan 2021 19:49:40 -0700 Subject: [PATCH 5/5] Fixing issue from rebase --- phpstan.neon.dist | 2 -- 1 file changed, 2 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 781f3db0996c..64d7f74c47b6 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -32,12 +32,10 @@ parameters: - '#Access to an undefined property CodeIgniter\\Database\\Forge::\$dropConstraintStr#' - '#Access to an undefined property CodeIgniter\\Database\\BaseConnection::\$mysqli|\$schema#' - '#Access to an undefined property CodeIgniter\\Database\\ConnectionInterface::(\$DBDriver|\$connID|\$likeEscapeStr|\$likeEscapeChar|\$escapeChar|\$protectIdentifiers|\$schema)#' - - '#Access to an undefined property CodeIgniter\\HTTP\\Request::\$uri#' - '#Access to protected property CodeIgniter\\Database\\BaseConnection::(\$DBDebug|\$DBPrefix|\$swapPre|\$charset|\$DBCollat|\$database)#' - '#Call to an undefined method CodeIgniter\\Database\\BaseConnection::_(disable|enable)ForeignKeyChecks\(\)#' - '#Call to an undefined method CodeIgniter\\Database\\BaseConnection::supportsForeignKeys\(\)#' - '#Call to an undefined method CodeIgniter\\Database\\ConnectionInterface::(tableExists|protectIdentifiers|setAliasedTables|escapeIdentifiers|affectedRows|addTableAlias|getIndexData)\(\)#' - - '#Call to an undefined method CodeIgniter\\HTTP\\Request::(getPath|getSegments|getMethod|setLocale|getPost)\(\)#' - '#Call to an undefined method CodeIgniter\\Router\\RouteCollectionInterface::(getDefaultNamespace|isFiltered|getFilterForRoute|getRoutesOptions)\(\)#' - '#Cannot access property [\$a-z_]+ on ((bool\|)?object\|resource)#' - '#Cannot call method [a-zA-Z_]+\(\) on ((bool\|)?object\|resource)#'