aboutsummaryrefslogtreecommitdiffstats
path: root/core/migrations.php
diff options
context:
space:
mode:
Diffstat (limited to 'core/migrations.php')
-rw-r--r--core/migrations.php43
1 files changed, 43 insertions, 0 deletions
diff --git a/core/migrations.php b/core/migrations.php
new file mode 100644
index 0000000..f2c9714
--- /dev/null
+++ b/core/migrations.php
@@ -0,0 +1,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!');
+}