diff options
| -rw-r--r-- | phpBB/phpbb/extension/base.php | 33 | ||||
| -rw-r--r-- | tests/extension/extension_base_test.php | 2 | 
2 files changed, 20 insertions, 15 deletions
diff --git a/phpBB/phpbb/extension/base.php b/phpBB/phpbb/extension/base.php index 8e717e1beb..ed190f6aa5 100644 --- a/phpBB/phpbb/extension/base.php +++ b/phpBB/phpbb/extension/base.php @@ -121,9 +121,11 @@ class base implements \phpbb\extension\extension_interface  	/**  	* Get the list of migration files from this extension  	* +	* @var bool $validate_classes Whether or not to check that the migration +	*		class exists and extends the base migration class.  	* @return array  	*/ -	protected function get_migration_file_list() +	protected function get_migration_file_list($validate_classes = true)  	{  		if ($this->migrations !== false)  		{ @@ -137,23 +139,26 @@ class base implements \phpbb\extension\extension_interface  		$migrations = $this->extension_finder->get_classes_from_files($migrations); -		foreach ($migrations as $key => $migration) +		if ($validate_classes)  		{ -			// If the class exists and is a subclass of the -			// \phpbb\db\migration\migration abstract class -			// we skip it. - -			// Otherwise, i.e. if it doesn't exist or it is -			// not an extend the abstract class, we unset it -			if (class_exists($migration)) { -				$reflector = new \ReflectionClass($migration); -				if ($reflector->isSubclassOf('\phpbb\db\migration\migration')) { -					continue; +			foreach ($migrations as $key => $migration) +			{ +				// If the class exists and is a subclass of the +				// \phpbb\db\migration\migration abstract class +				// we skip it. + +				// Otherwise, i.e. if it doesn't exist or it is +				// not an extend the abstract class, we unset it +				if (class_exists($migration)) { +					$reflector = new \ReflectionClass($migration); +					if ($reflector->isSubclassOf('\phpbb\db\migration\migration')) { +						continue; +					} +  				} +				unset($migrations[$key]);  			} - -			unset($migrations[$key]);  		}  		return $migrations; diff --git a/tests/extension/extension_base_test.php b/tests/extension/extension_base_test.php index eee38186db..898c11d902 100644 --- a/tests/extension/extension_base_test.php +++ b/tests/extension/extension_base_test.php @@ -74,6 +74,6 @@ class phpbb_extension_extension_base_test extends phpbb_test_case  	public function test_suffix_get_classes($extension_name, $expected)  	{  		$extension = $this->extension_manager->get_extension($extension_name); -		$this->assertEquals($expected, self::$reflection_method_get_migration_file_list->invoke($extension)); +		$this->assertEquals($expected, self::$reflection_method_get_migration_file_list->invoke($extension, false));  	}  }  | 
