From b18b08a7570f9e3820b86e069917b38a891b579a Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Tue, 5 Apr 2022 10:51:49 +0200 Subject: [PATCH] drop unused plugin default activations, fixes #568 --- app/controllers/admin/plugin.php | 46 ------------------- app/views/admin/plugin/default_activation.php | 45 ------------------ app/views/admin/plugin/index.php | 9 ---- .../5.1.28_drop_default_activations.php | 29 ++++++++++++ lib/classes/PluginAdministration.php | 26 ----------- lib/plugins/engine/PluginManager.class.php | 38 --------------- 6 files changed, 29 insertions(+), 164 deletions(-) delete mode 100644 app/views/admin/plugin/default_activation.php create mode 100644 db/migrations/5.1.28_drop_default_activations.php diff --git a/app/controllers/admin/plugin.php b/app/controllers/admin/plugin.php index 0d17ff4d647..91f597245f7 100644 --- a/app/controllers/admin/plugin.php +++ b/app/controllers/admin/plugin.php @@ -490,52 +490,6 @@ class Admin_PluginController extends AuthenticatedController $this->manifest = $manifest; } - /** - * Display the default activation set for this plugin. - */ - public function default_activation_action($plugin_id) - { - Helpbar::Get()->addPlainText(_('Einrichtungen'), _('Wählen Sie die Einrichtungen, in deren Veranstaltungen das Plugin automatisch aktiviert sein soll.'), Icon::create('info')); - $actions = new ActionsWidget(); - $actions->addLink(_('Pluginverwaltung'), $this->url_for('admin/plugin'), Icon::create('plugin', 'clickable')); - Sidebar::Get()->addWidget($actions); - $plugin_manager = PluginManager::getInstance(); - $plugin = $plugin_manager->getPluginInfoById($plugin_id); - $selected_inst = $plugin_manager->getDefaultActivations($plugin_id); - - $this->plugin_name = $plugin['name']; - $this->plugin_id = $plugin_id; - $this->selected_inst = $selected_inst; - $this->institutes = $this->plugin_admin->getInstitutes(); - } - - /** - * Change the default activation for this plugin. - */ - public function save_default_activation_action($plugin_id) - { - $plugin_manager = PluginManager::getInstance(); - $selected_inst = Request::optionArray('selected_inst'); - - $this->check_ticket(); - - // save selected institutes (if any) - $plugin_manager->setDefaultActivations($plugin_id, $selected_inst); - - if (count($selected_inst) === 0) { - PageLayout::postSuccess(_('Die Default-Aktivierung wurde ausgeschaltet.')); - } else { - $message = ngettext( - 'Für die ausgewählte Einrichtung wurde das Plugin standardmäßig aktiviert.', - 'Für die ausgewählten Einrichtungen wurde das Plugin standardmäßig aktiviert.', - count($selected_inst) - ); - PageLayout::postSuccess($message); - } - - $this->redirect('admin/plugin/default_activation/' . $plugin_id); - } - /** * migrate a plugin to top version * diff --git a/app/views/admin/plugin/default_activation.php b/app/views/admin/plugin/default_activation.php deleted file mode 100644 index 5ac8d166533..00000000000 --- a/app/views/admin/plugin/default_activation.php +++ /dev/null @@ -1,45 +0,0 @@ -<? -# Lifter010: TODO -use Studip\Button, Studip\LinkButton; - -?> -<? if (isset($flash['message'])): ?> - <?= MessageBox::success($flash['message']) ?> -<? endif ?> - -<form action="<?= $controller->url_for('admin/plugin/save_default_activation', $plugin_id) ?>" method="post" class="default"> - <?= CSRFProtection::tokenTag() ?> - <input type="hidden" name="studip_ticket" value="<?= get_ticket() ?>"> - - <fieldset> - <legend> - <?= _('Standard-Aktivierung in Veranstaltungen') ?>: <?= htmlReady($plugin_name) ?> - </legend> - - - <label> - <?= _('Einrichtung') ?> - <select name="selected_inst[]" multiple size="20" class="nested-select" style="width: 100%"> - <? foreach ($institutes as $id => $institute): ?> - <option class="nested-item-header" value="<?= $id ?>" <?= in_array($id, $selected_inst) ? 'selected' : '' ?>> - <?= htmlReady($institute['name']) ?> - </option> - - <? if (isset($institute['children'])): ?> - <? foreach ($institute['children'] as $id => $child): ?> - <option class="nested-item" value="<?= $id ?>" <?= in_array($id, $selected_inst) ? 'selected' : '' ?>> - <?= htmlReady($child['name']) ?> - </option> - <? endforeach ?> - <? endif ?> - <? endforeach ?> - </select> - </label> - </fieldset> - - <footer> - <?= Button::create(_('Übernehmen'),'save', ['title' => _('Einstellungen speichern')])?> - - <?= LinkButton::create('<< ' . _("Zurück"), $controller->url_for('admin/plugin'), ['title' => _('Zurück zur Plugin-Verwaltung')])?> - </footer> -</form> diff --git a/app/views/admin/plugin/index.php b/app/views/admin/plugin/index.php index 7187a772f81..3266c778ac8 100644 --- a/app/views/admin/plugin/index.php +++ b/app/views/admin/plugin/index.php @@ -90,13 +90,6 @@ use Studip\Button, Studip\LinkButton; </td> <td class="actions"> <? $actionMenu = ActionMenu::get() ?> - <? if (in_array('StandardPlugin', $plugin['type'])): ?> - <? $actionMenu->addLink( - $controller->url_for('admin/plugin/default_activation/' . $pluginid), - _('In Veranstaltungen aktivieren'), - Icon::create('seminar+add', 'clickable', ['title' => _('In Veranstaltungen aktivieren')]) - ) ?> - <? endif ?> <? $actionMenu->addLink( $controller->url_for('admin/role/assign_plugin_role/' . $pluginid), _('Zugriffsrechte bearbeiten'), @@ -114,8 +107,6 @@ use Studip\Button, Studip\LinkButton; ]), ['data-dialog' => 'size=auto;reload-on-close'] ) ?> - <? endif ?> - <? if (!$plugin['depends'] && isset($update_info[$pluginid]['version']) && !$plugin['core']): ?> <? $actionMenu->addLink( $controller->url_for('admin/plugin/download/' . $pluginid), _('Herunterladen'), diff --git a/db/migrations/5.1.28_drop_default_activations.php b/db/migrations/5.1.28_drop_default_activations.php new file mode 100644 index 00000000000..bc5b75897b7 --- /dev/null +++ b/db/migrations/5.1.28_drop_default_activations.php @@ -0,0 +1,29 @@ +<?php + +class DropDefaultActivations extends Migration +{ + public function description() + { + return 'Drop unused plugin default activations'; + } + + public function up() + { + $db = DBManager::get(); + + $db->exec('DROP TABLE IF EXISTS plugins_default_activations'); + } + + public function down() + { + $db = DBManager::get(); + + $db->exec(" + CREATE TABLE plugins_default_activations ( + pluginid int(10) unsigned NOT NULL DEFAULT 0, + institutid char(32) COLLATE latin1_bin NOT NULL DEFAULT '', + PRIMARY KEY (pluginid, institutid) + ) + "); + } +} diff --git a/lib/classes/PluginAdministration.php b/lib/classes/PluginAdministration.php index 123a0f25457..caf80ceab22 100644 --- a/lib/classes/PluginAdministration.php +++ b/lib/classes/PluginAdministration.php @@ -291,32 +291,6 @@ class PluginAdministration } } - /** - * Get a list of all available institutes. - */ - public function getInstitutes() - { - $db = DBManager::get(); - $institutes = []; - - $sql = 'SELECT Institut_id, Name, fakultaets_id, Institut_id = fakultaets_id AS is_fak - FROM Institute ORDER BY is_fak DESC, Name'; - $result = $db->query($sql)->fetchAll(); - - foreach ($result as $row) { - $inst_id = $row['Institut_id']; - $fak_id = $row['fakultaets_id']; - - if ($inst_id == $fak_id) { - $institutes[$inst_id] = ['name' => $row['Name']]; - } else { - $institutes[$fak_id]['children'][$inst_id] = ['name' => $row['Name']]; - } - } - - return $institutes; - } - /** * Get a list of the types of all installed plugins. * diff --git a/lib/plugins/engine/PluginManager.class.php b/lib/plugins/engine/PluginManager.class.php index 9216754632f..1745e506ab5 100644 --- a/lib/plugins/engine/PluginManager.class.php +++ b/lib/plugins/engine/PluginManager.class.php @@ -299,43 +299,6 @@ class PluginManager return $statement->rowCount(); } - /** - * Returns the list of institutes for which a specific plugin is - * enabled by default. - * - * @param int $id id of the plugin - */ - public function getDefaultActivations ($id) - { - $db = DBManager::get(); - - $result = $db->query("SELECT institutid FROM plugins_default_activations - WHERE pluginid = '$id'"); - - return $result->fetchAll(PDO::FETCH_COLUMN); - } - - /** - * Set the list of institutes for which a specific plugin should - * be enabled by default. - * - * @param int $id id of the plugin - * @param array $institutes array of institute ids - */ - public function setDefaultActivations ($id, $institutes) - { - $db = DBManager::get(); - - $result = $db->query("DELETE FROM plugins_default_activations - WHERE pluginid = '$id'"); - - $stmt = $db->prepare("INSERT INTO plugins_default_activations - (pluginid, institutid) VALUES (?,?)"); - foreach ($institutes as $instid) { - $stmt->execute([$id, $instid]); - } - } - /** * Disable loading of all non-core plugins for the current session. * @@ -496,7 +459,6 @@ class PluginManager $db->execute("DELETE FROM plugins WHERE pluginid = ?", [$id]); $db->execute("DELETE FROM plugins_activated WHERE pluginid = ?", [$id]); - $db->execute("DELETE FROM plugins_default_activations WHERE pluginid = ?", [$id]); $db->execute("DELETE FROM roles_plugins WHERE pluginid = ?", [$id]); unset($this->plugins[$id]); -- GitLab