Skip to content
Snippets Groups Projects
Commit f432e2ec authored by Elmar Ludwig's avatar Elmar Ludwig Committed by Jan-Hendrik Willms
Browse files

correctly display pending migrations for plugins, fixes #3022

Closes #3022

Merge request studip/studip!2031
parent aaf78f10
No related branches found
No related tags found
No related merge requests found
......@@ -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; ?>
......
......@@ -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();
}
......
......@@ -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();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment