aboutsummaryrefslogtreecommitdiffstats
path: root/core/migrations.php
blob: f2c971469834a4acea1bbfd8777f3d138cdac032 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
#===============================================================================
# Get Migrator singleton
#===============================================================================
$Migrator = Application::getMigrator();

#===============================================================================
# Check for outstanding database schema migrations
#===============================================================================
if($Migrator->isMigrationNeeded()) {
	@session_start();

	Application::set('TEMPLATE.NAME', Application::get('ADMIN.TEMPLATE'));
	Application::set('TEMPLATE.LANG', Application::get('ADMIN.LANGUAGE'));
	Application::getLanguage(TRUE); // Force recreation of Language object

	if(HTTP::issetPOST(['token' => Application::getSecurityToken()], 'run')) {
		if(!$migrated = $Migrator->runMigrations()) {
			Application::exit('CONFUSED: No migrations were performed?!');
		}
	}

	$Template = Template\Factory::build('migration');
	$Template->set('MIGRATION', [
		'LIST' => $Migrator->getMigrations(),
		'SUCCESSFUL' => $migrated ?? [],
		'SCHEMA_VERSION' => [
			'DATABASE' => $Migrator->getVersionFromTable(),
			'CODEBASE' => $Migrator::CURRENT_SCHEMA_VERSION
		],
	]);

	Application::exit($Template);
}

#===============================================================================
# Check for an unsupported downgrade attempt
#===============================================================================
else if($Migrator->isDowngradeAttempt()) {
	throw new Exception('MIGRATOR: The schema version used by *your* database is
		higher than the schema version defined in the codebase. It is officially
		not supported to automatically downgrade the database schema version!');
}