From f432e2ecac0eb0a524238c4b74f3305d1625187f Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Tue, 15 Aug 2023 11:22:00 +0000 Subject: [PATCH] correctly display pending migrations for plugins, fixes #3022 Closes #3022 Merge request studip/studip!2031 --- app/views/admin/plugin/index.php | 5 ++--- cli/Commands/Plugins/PluginInfo.php | 4 ++-- lib/classes/PluginAdministration.php | 9 ++++----- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/app/views/admin/plugin/index.php b/app/views/admin/plugin/index.php index c2a2034af33..9d7190d88de 100644 --- a/app/views/admin/plugin/index.php +++ b/app/views/admin/plugin/index.php @@ -84,10 +84,9 @@ use Studip\Button, Studip\LinkButton; <td <? if (!$plugin['enabled']) echo 'class="quiet"'; ?>> <? if (!$plugin['depends']) : ?> <?= htmlReady($migrations[$pluginid]['schema_version'] ?? '') ?> - <? if (!empty($migrations[$pluginid]['schema_version']) && !empty($migrations[$pluginid]['migration_top_version']) - && ($migrations[$pluginid]['schema_version'] < $migrations[$pluginid]['migration_top_version'])): ?> + <? if (!empty($migrations[$pluginid]['pending_migrations'])): ?> <a href="<?= $controller->url_for('admin/plugin/migrate/' . $pluginid) ?>" - title="<?= sprintf(_('Update auf Version %d verfügbar'), $migrations[$pluginid]['migration_top_version']) ?>"> + title="<?= sprintf(_('%d ausstehende Migration(en)'), $migrations[$pluginid]['pending_migrations']) ?>"> <?= Icon::create('plugin', Icon::ROLE_STATUS_RED) ?> </a> <? endif; ?> diff --git a/cli/Commands/Plugins/PluginInfo.php b/cli/Commands/Plugins/PluginInfo.php index 492c1aea14e..e1b00f48e52 100644 --- a/cli/Commands/Plugins/PluginInfo.php +++ b/cli/Commands/Plugins/PluginInfo.php @@ -35,7 +35,7 @@ class PluginInfo extends AbstractPluginCommand $basepath = \Config::get()->PLUGINS_PATH; foreach ($plugins as $plugin) { - $plugindir = $basepath . '/' . $plugin['path'] . '/'; + $plugindir = $basepath . '/' . $plugin['path']; $plugin['class_exists'] = $this->pluginClassExists($plugindir, $plugin); $plugin['type'] = join(',', $plugin['type']); @@ -43,7 +43,7 @@ class PluginInfo extends AbstractPluginCommand if (is_dir($plugindir . '/migrations')) { $schemaVersion = new \DBSchemaVersion($plugin['name']); $migrator = new \Migrator($plugindir . '/migrations', $schemaVersion); - $plugin['migration_top_version'] = $migrator->topVersion(); + $plugin['pending_migrations'] = count($migrator->relevantMigrations(null)); $plugin['schema_version'] = $schemaVersion->get(); } diff --git a/lib/classes/PluginAdministration.php b/lib/classes/PluginAdministration.php index 4cdc9a42681..763f67dca3d 100644 --- a/lib/classes/PluginAdministration.php +++ b/lib/classes/PluginAdministration.php @@ -360,11 +360,11 @@ class PluginAdministration $plugins = $plugin_manager->getPluginInfos(); $basepath = Config::get()->PLUGINS_PATH; foreach ($plugins as $id => $plugin) { - $plugindir = $basepath . '/' . $plugin['path'] . '/'; + $plugindir = $basepath . '/' . $plugin['path']; if (is_dir($plugindir . '/migrations')) { $schema_version = new DBSchemaVersion($plugin['name']); $migrator = new Migrator($plugindir . '/migrations', $schema_version); - $info[$id]['migration_top_version'] = $migrator->topVersion(); + $info[$id]['pending_migrations'] = count($migrator->relevantMigrations(null)); $info[$id]['schema_version'] = $schema_version->get(); } } @@ -381,12 +381,11 @@ class PluginAdministration { $plugin_manager = PluginManager::getInstance(); $plugin = $plugin_manager->getPluginInfoById($plugin_id); - $basepath = Config::get()->PLUGINS_PATH; - $plugindir = $basepath . '/' . $plugin['path'] . '/'; + $plugindir = Config::get()->PLUGINS_PATH . '/' . $plugin['path']; $log = ''; if (is_dir($plugindir . '/migrations')) { $schema_version = new DBSchemaVersion($plugin['name']); - $migrator = new Migrator($plugindir .'/migrations', $schema_version, true); + $migrator = new Migrator($plugindir . '/migrations', $schema_version, true); ob_start(); $migrator->migrateTo(null); $log = ob_get_clean(); -- GitLab