log = ''; } public function addLine($message) { $this->log .= $message . "\n"; } public function getLog() { return $this->log; } } $executing = false; $migration = null; $output = ''; if (isset($_POST['execute'])) { $executing = true; } $migrationsDirectory = __DIR__ . '/../app/classes/Framadate/Migrations'; $log = new MigrationLogger(); $configuration = new Configuration($connect, new OutputWriter(function ($message) use ($log) { $log->addLine($message); })); $configuration->setMigrationsTableName(Utils::table(MIGRATION_TABLE) . '_new'); $configuration->setMigrationsDirectory($migrationsDirectory); $configuration->setMigrationsNamespace('DoctrineMigrations'); $configuration->registerMigrationsFromDirectory($migrationsDirectory); if ($executing) { $migration = new Migration($configuration); $migration->migrate(); $output = trim(strip_tags($log->getLog())); } $infos = (new MigrationStatusInfosHelper($configuration))->getMigrationsInfos(); $smarty->assign('countTotal', $infos['Available Migrations']); $smarty->assign('countExecuted', $infos['Executed Migrations']); $smarty->assign('countWaiting', $infos['New Migrations']); $smarty->assign('executing', $executing); $smarty->assign('title', __('Admin', 'Migration')); $smarty->assign('output', $output); $smarty->assign('time', round((microtime(true)-$_SERVER['REQUEST_TIME_FLOAT']), 4)); $smarty->display('admin/migration.tpl');