From d08843853e5cae0c62fb83494b6f34a312a94f53 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Sun, 23 Jan 2022 20:51:50 +0100
Subject: [PATCH] [ticket/16956] Remove use of recently changed status for
 extensions

PHPBB3-16956
---
 phpBB/phpbb/extension/manager.php | 17 -----------------
 tests/extension/manager_test.php  |  9 ++-------
 2 files changed, 2 insertions(+), 24 deletions(-)

diff --git a/phpBB/phpbb/extension/manager.php b/phpBB/phpbb/extension/manager.php
index 09de7950c4..b60b65dbe2 100644
--- a/phpBB/phpbb/extension/manager.php
+++ b/phpBB/phpbb/extension/manager.php
@@ -30,7 +30,6 @@ class manager
 	protected $cache;
 	protected $php_ext;
 	protected $extensions;
-	protected $recently_changed_ext_status;
 	protected $extension_table;
 	protected $phpbb_root_path;
 	protected $cache_name;
@@ -243,7 +242,6 @@ class manager
 
 		if ($active)
 		{
-			$this->recently_changed_ext_status[$name] = false;
 			$this->router->without_cache();
 		}
 
@@ -298,7 +296,6 @@ class manager
 
 		if (!$active)
 		{
-			$this->recently_changed_ext_status[$name] = true;
 			$this->router->without_cache();
 		}
 
@@ -514,13 +511,6 @@ class manager
 	*/
 	public function is_enabled($name)
 	{
-		// The extension has just been enabled and so is not loaded. When asking if it is enabled or
-		// not we should answer no to stay consistent with the status at the beginning of the request.
-		if (isset($this->recently_changed_ext_status[$name]))
-		{
-			return $this->recently_changed_ext_status[$name];
-		}
-
 		return isset($this->extensions[$name]['ext_active']) && $this->extensions[$name]['ext_active'];
 	}
 
@@ -532,13 +522,6 @@ class manager
 	*/
 	public function is_disabled($name)
 	{
-		// The extension has just been disabled and so is still loaded. When asking if it is disabled or
-		// not we should answer yes to stay consistent with the status at the beginning of the request.
-		if (isset($this->recently_changed_ext_status[$name]))
-		{
-			return $this->recently_changed_ext_status[$name];
-		}
-
 		return isset($this->extensions[$name]['ext_active']) && !$this->extensions[$name]['ext_active'];
 	}
 
diff --git a/tests/extension/manager_test.php b/tests/extension/manager_test.php
index bb615d7ac4..4bd1c2b001 100644
--- a/tests/extension/manager_test.php
+++ b/tests/extension/manager_test.php
@@ -97,9 +97,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
 		$this->assertEquals(array('vendor2/foo'), array_keys($this->extension_manager->all_enabled()));
 		$this->extension_manager->enable('vendor2/bar');
 
-		// We should not display the extension as being enabled in the same request
-		$this->assertEquals(array('vendor2/foo'), array_keys($this->extension_manager->all_enabled()));
-		// With a different request we should see the extension as being disabled
+		// We should see the extension as being disabled
 		$this->assertEquals(array('vendor2/bar', 'vendor2/foo'), array_keys($this->create_extension_manager()->all_enabled()));
 
 		$this->assertEquals(array('vendor/moo', 'vendor2/bar', 'vendor2/foo'), array_keys($this->extension_manager->all_configured()));
@@ -126,10 +124,7 @@ class phpbb_extension_manager_test extends phpbb_database_test_case
 		$this->assertEquals(array('vendor2/foo'), array_keys($this->extension_manager->all_enabled()));
 		$this->extension_manager->disable('vendor2/foo');
 
-		// We should still display the extension as being enabled in the current request
-		$this->assertEquals(array('vendor2/foo'), array_keys($this->extension_manager->all_enabled()));
-		// With a different request we should see the extension as being disabled
-		$this->assertEquals(array(), array_keys($this->create_extension_manager()->all_enabled()));
+		$this->assertEquals([], array_keys($this->extension_manager->all_enabled()));
 
 		$this->assertEquals(array('vendor/moo', 'vendor2/foo'), array_keys($this->extension_manager->all_configured()));