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; ...@@ -84,10 +84,9 @@ use Studip\Button, Studip\LinkButton;
<td <? if (!$plugin['enabled']) echo 'class="quiet"'; ?>> <td <? if (!$plugin['enabled']) echo 'class="quiet"'; ?>>
<? if (!$plugin['depends']) : ?> <? if (!$plugin['depends']) : ?>
<?= htmlReady($migrations[$pluginid]['schema_version'] ?? '') ?> <?= htmlReady($migrations[$pluginid]['schema_version'] ?? '') ?>
<? if (!empty($migrations[$pluginid]['schema_version']) && !empty($migrations[$pluginid]['migration_top_version']) <? if (!empty($migrations[$pluginid]['pending_migrations'])): ?>
&& ($migrations[$pluginid]['schema_version'] < $migrations[$pluginid]['migration_top_version'])): ?>
<a href="<?= $controller->url_for('admin/plugin/migrate/' . $pluginid) ?>" <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) ?> <?= Icon::create('plugin', Icon::ROLE_STATUS_RED) ?>
</a> </a>
<? endif; ?> <? endif; ?>
......
...@@ -35,7 +35,7 @@ class PluginInfo extends AbstractPluginCommand ...@@ -35,7 +35,7 @@ class PluginInfo extends AbstractPluginCommand
$basepath = \Config::get()->PLUGINS_PATH; $basepath = \Config::get()->PLUGINS_PATH;
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
$plugindir = $basepath . '/' . $plugin['path'] . '/'; $plugindir = $basepath . '/' . $plugin['path'];
$plugin['class_exists'] = $this->pluginClassExists($plugindir, $plugin); $plugin['class_exists'] = $this->pluginClassExists($plugindir, $plugin);
$plugin['type'] = join(',', $plugin['type']); $plugin['type'] = join(',', $plugin['type']);
...@@ -43,7 +43,7 @@ class PluginInfo extends AbstractPluginCommand ...@@ -43,7 +43,7 @@ class PluginInfo extends AbstractPluginCommand
if (is_dir($plugindir . '/migrations')) { if (is_dir($plugindir . '/migrations')) {
$schemaVersion = new \DBSchemaVersion($plugin['name']); $schemaVersion = new \DBSchemaVersion($plugin['name']);
$migrator = new \Migrator($plugindir . '/migrations', $schemaVersion); $migrator = new \Migrator($plugindir . '/migrations', $schemaVersion);
$plugin['migration_top_version'] = $migrator->topVersion(); $plugin['pending_migrations'] = count($migrator->relevantMigrations(null));
$plugin['schema_version'] = $schemaVersion->get(); $plugin['schema_version'] = $schemaVersion->get();
} }
......
...@@ -360,11 +360,11 @@ class PluginAdministration ...@@ -360,11 +360,11 @@ class PluginAdministration
$plugins = $plugin_manager->getPluginInfos(); $plugins = $plugin_manager->getPluginInfos();
$basepath = Config::get()->PLUGINS_PATH; $basepath = Config::get()->PLUGINS_PATH;
foreach ($plugins as $id => $plugin) { foreach ($plugins as $id => $plugin) {
$plugindir = $basepath . '/' . $plugin['path'] . '/'; $plugindir = $basepath . '/' . $plugin['path'];
if (is_dir($plugindir . '/migrations')) { if (is_dir($plugindir . '/migrations')) {
$schema_version = new DBSchemaVersion($plugin['name']); $schema_version = new DBSchemaVersion($plugin['name']);
$migrator = new Migrator($plugindir . '/migrations', $schema_version); $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(); $info[$id]['schema_version'] = $schema_version->get();
} }
} }
...@@ -381,12 +381,11 @@ class PluginAdministration ...@@ -381,12 +381,11 @@ class PluginAdministration
{ {
$plugin_manager = PluginManager::getInstance(); $plugin_manager = PluginManager::getInstance();
$plugin = $plugin_manager->getPluginInfoById($plugin_id); $plugin = $plugin_manager->getPluginInfoById($plugin_id);
$basepath = Config::get()->PLUGINS_PATH; $plugindir = Config::get()->PLUGINS_PATH . '/' . $plugin['path'];
$plugindir = $basepath . '/' . $plugin['path'] . '/';
$log = ''; $log = '';
if (is_dir($plugindir . '/migrations')) { if (is_dir($plugindir . '/migrations')) {
$schema_version = new DBSchemaVersion($plugin['name']); $schema_version = new DBSchemaVersion($plugin['name']);
$migrator = new Migrator($plugindir .'/migrations', $schema_version, true); $migrator = new Migrator($plugindir . '/migrations', $schema_version, true);
ob_start(); ob_start();
$migrator->migrateTo(null); $migrator->migrateTo(null);
$log = ob_get_clean(); $log = ob_get_clean();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment