Skip to content
Snippets Groups Projects
Commit b18b08a7 authored by Elmar Ludwig's avatar Elmar Ludwig
Browse files

drop unused plugin default activations, fixes #568

parent fa2685ab
No related branches found
No related tags found
No related merge requests found
......@@ -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
*
......
<?
# 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')])?>
&nbsp;
<?= LinkButton::create('<< ' . _("Zurück"), $controller->url_for('admin/plugin'), ['title' => _('Zurück zur Plugin-Verwaltung')])?>
</footer>
</form>
......@@ -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'),
......
<?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)
)
");
}
}
......@@ -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.
*
......
......@@ -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]);
......
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