diff options
| -rw-r--r-- | phpBB/adm/style/acp_ext_list.html | 6 | ||||
| -rw-r--r-- | phpBB/adm/style/admin.css | 8 | ||||
| -rw-r--r-- | phpBB/includes/acp/acp_users.php | 6 | ||||
| -rw-r--r-- | phpBB/phpbb/cache/driver/memcached.php | 2 | ||||
| -rw-r--r-- | phpBB/phpbb/db/migrator.php | 7 | ||||
| -rw-r--r-- | tests/dbal/migration/revert_table.php | 39 | ||||
| -rw-r--r-- | tests/dbal/migration/revert_table_with_dependency.php | 52 | ||||
| -rw-r--r-- | tests/dbal/migrator_test.php | 45 | 
8 files changed, 158 insertions, 7 deletions
diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html index af9e00a614..7ab2608e13 100644 --- a/phpBB/adm/style/acp_ext_list.html +++ b/phpBB/adm/style/acp_ext_list.html @@ -51,7 +51,8 @@  			<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_enabled_name_after --></td>  			<td style="text-align: center;">  				<!-- IF enabled.S_VERSIONCHECK --> -				<strong <!-- IF enabled.S_UP_TO_DATE -->style="color: #228822;"<!-- ELSE -->style="color: #BC2A4D;"<!-- ENDIF -->>{enabled.META_VERSION}</strong> +				<strong class="<!-- IF enabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{enabled.META_VERSION}</strong> +				<!-- IF not enabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->  				<!-- ELSE -->  				{enabled.META_VERSION}  				<!-- ENDIF --> @@ -76,7 +77,8 @@  			<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_disabled_name_after --></td>  			<td style="text-align: center;">  				<!-- IF disabled.S_VERSIONCHECK --> -				<strong <!-- IF disabled.S_UP_TO_DATE -->style="color: #228822;"<!-- ELSE -->style="color: #BC2A4D;"<!-- ENDIF -->>{disabled.META_VERSION}</strong> +				<strong class="<!-- IF disabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{disabled.META_VERSION}</strong> +				<!-- IF not disabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->  				<!-- ELSE -->  				{disabled.META_VERSION}  				<!-- ENDIF --> diff --git a/phpBB/adm/style/admin.css b/phpBB/adm/style/admin.css index 2322b3da88..41d0ae8d42 100644 --- a/phpBB/adm/style/admin.css +++ b/phpBB/adm/style/admin.css @@ -2506,6 +2506,14 @@ fieldset.permissions .padding {  /* Classes for additional tasks  ---------------------------------------- */ +.current-ext { +	color: #228822; +} + +.outdated-ext { +	color: #BC2A4D; +} +  .phpinfo {  	overflow: auto;  	width: 99%; diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index ab86d1b921..090cb32ebb 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -1491,12 +1491,14 @@ class acp_users  					* Validate profile data in ACP before submitting to the database  					*  					* @event core.acp_users_profile_validate -					* @var	bool	submit		Flag indicating if submit button has been pressed  					* @var	array	data		Array with user profile data +					* @var	int		user_id		The user id +					* @var	array	user_row	Array with the full user data  					* @var	array	error		Array with the form errors  					* @since 3.1.4-RC1 +					* @changed 3.1.12-RC1		Removed submit, added user_id, user_row  					*/ -					$vars = array('submit', 'data', 'error'); +					$vars = array('data', 'user_id', 'user_row', 'error');  					extract($phpbb_dispatcher->trigger_event('core.acp_users_profile_validate', compact($vars)));  					if (!sizeof($error)) diff --git a/phpBB/phpbb/cache/driver/memcached.php b/phpBB/phpbb/cache/driver/memcached.php index 808e15afe8..7d66759ec2 100644 --- a/phpBB/phpbb/cache/driver/memcached.php +++ b/phpBB/phpbb/cache/driver/memcached.php @@ -65,7 +65,7 @@ class memcached extends \phpbb\cache\driver\memory  			$this->memcached->setOption(\Memcached::OPT_COMPRESSION, false);  		} -		foreach (explode(',', PHPBB_ACM_MEMCACHE) as $u) +		foreach (explode(',', PHPBB_ACM_MEMCACHED) as $u)  		{  			preg_match('#(.*)/(\d+)#', $u, $parts);  			$this->memcached->addServer(trim($parts[1]), (int) trim($parts[2])); diff --git a/phpBB/phpbb/db/migrator.php b/phpBB/phpbb/db/migrator.php index d7d7f18d2b..6c026c3ae1 100644 --- a/phpBB/phpbb/db/migrator.php +++ b/phpBB/phpbb/db/migrator.php @@ -503,11 +503,14 @@ class migrator  			return;  		} -		foreach ($this->migration_state as $name => $state) +		foreach ($this->migrations as $name)  		{ -			if (!empty($state['migration_depends_on']) && in_array($migration, $state['migration_depends_on'])) +			$state = $this->migration_state($name); + +			if ($state && in_array($migration, $state['migration_depends_on']) && ($state['migration_schema_done'] || $state['migration_data_done']))  			{  				$this->revert_do($name); +				return;  			}  		} diff --git a/tests/dbal/migration/revert_table.php b/tests/dbal/migration/revert_table.php new file mode 100644 index 0000000000..162421be85 --- /dev/null +++ b/tests/dbal/migration/revert_table.php @@ -0,0 +1,39 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +class phpbb_dbal_migration_revert_table extends \phpbb\db\migration\migration +{ +	function update_schema() +	{ +		return array( +			'add_tables' => array( +				'phpbb_foobar' => array( +					'COLUMNS' => array( +						'module_id' => array('UINT:3', NULL, 'auto_increment'), +						'bar_column' => array('UINT', 1), +					), +					'PRIMARY_KEY'	=> 'module_id', +				), +			), +		); +	} + +	function revert_schema() +	{ +		return array( +			'drop_tables'	=> array( +				'phpbb_foobar', +			), +		); +	} +} diff --git a/tests/dbal/migration/revert_table_with_dependency.php b/tests/dbal/migration/revert_table_with_dependency.php new file mode 100644 index 0000000000..f26ad076e6 --- /dev/null +++ b/tests/dbal/migration/revert_table_with_dependency.php @@ -0,0 +1,52 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +class phpbb_dbal_migration_revert_table_with_dependency extends \phpbb\db\migration\migration +{ +	static public function depends_on() +	{ +		return array('phpbb_dbal_migration_revert_table'); +	} + +	function update_schema() +	{ +		return array( +			'add_columns' => array( +				'phpbb_foobar' => array( +					'baz_column' => array('UINT', 1), +				), +			), +			'drop_columns' => array( +				'phpbb_foobar' => array( +					'bar_column', +				), +			), +		); +	} + +	function revert_schema() +	{ +		return array( +			'add_columns' => array( +				'phpbb_foobar' => array( +					'bar_column' => array('UINT', 1), +				), +			), +			'drop_columns' => array( +				'phpbb_foobar' => array( +					'baz_column', +				), +			), +		); +	} +} diff --git a/tests/dbal/migrator_test.php b/tests/dbal/migrator_test.php index f7275a4bbe..372b2dbe1e 100644 --- a/tests/dbal/migrator_test.php +++ b/tests/dbal/migrator_test.php @@ -17,16 +17,26 @@ require_once dirname(__FILE__) . '/migration/if.php';  require_once dirname(__FILE__) . '/migration/recall.php';  require_once dirname(__FILE__) . '/migration/revert.php';  require_once dirname(__FILE__) . '/migration/revert_with_dependency.php'; +require_once dirname(__FILE__) . '/migration/revert_table.php'; +require_once dirname(__FILE__) . '/migration/revert_table_with_dependency.php';  require_once dirname(__FILE__) . '/migration/fail.php';  require_once dirname(__FILE__) . '/migration/installed.php';  require_once dirname(__FILE__) . '/migration/schema.php';  class phpbb_dbal_migrator_test extends phpbb_database_test_case  { +	/** @var \phpbb\db\driver\driver_interface */  	protected $db; + +	/** @var \phpbb\db\tools\tools_interface */  	protected $db_tools; + +	/** @var \phpbb\db\migrator */  	protected $migrator; +	/** @var \phpbb\config\config */ +	protected $config; +  	public function getDataSet()  	{  		return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/migrator.xml'); @@ -241,6 +251,41 @@ class phpbb_dbal_migrator_test extends phpbb_database_test_case  		$this->assertEquals(1, $migrator_test_revert_counter, 'Revert did call custom function again');  	} +	public function test_revert_table() +	{ +		// Make sure there are no other migrations in the db, this could cause issues +		$this->db->sql_query("DELETE FROM phpbb_migrations"); +		$this->migrator->load_migration_state(); + +		$this->migrator->set_migrations(array('phpbb_dbal_migration_revert_table', 'phpbb_dbal_migration_revert_table_with_dependency')); + +		$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table')); +		$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table_with_dependency')); + +		// Install the migration first +		while (!$this->migrator->finished()) +		{ +			$this->migrator->update(); +		} + +		$this->assertTrue($this->migrator->migration_state('phpbb_dbal_migration_revert_table') !== false); +		$this->assertTrue($this->migrator->migration_state('phpbb_dbal_migration_revert_table_with_dependency') !== false); + +		$this->assertTrue($this->db_tools->sql_column_exists('phpbb_foobar', 'baz_column')); +		$this->assertFalse($this->db_tools->sql_column_exists('phpbb_foobar', 'bar_column')); + +		// Revert migrations +		while ($this->migrator->migration_state('phpbb_dbal_migration_revert_table') !== false) +		{ +			$this->migrator->revert('phpbb_dbal_migration_revert_table'); +		} + +		$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table')); +		$this->assertFalse($this->migrator->migration_state('phpbb_dbal_migration_revert_table_with_dependency')); + +		$this->assertFalse($this->db_tools->sql_table_exists('phpbb_foobar')); +	} +  	public function test_fail()  	{  		$this->migrator->set_migrations(array('phpbb_dbal_migration_fail'));  | 
