aboutsummaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2022-11-15 12:13:33 +0000
committerDavid Siegfried <david.siegfried@uni-vechta.de>2022-11-15 12:13:33 +0000
commit5c26971b5f68db11a045fd582a52e6200b80a397 (patch)
treeb132d837198f745bcc2c2d374a3c83bddb1e9ec5 /db
parent2fa10e47da168d4def1132fbb315b5e3f332ee4f (diff)
adjust migration 246 in order to remove the consultation plugin completely, fixes #1731
Closes #1731 Merge request studip/studip!1131
Diffstat (limited to 'db')
-rw-r--r--db/migrations/1.246_consultations.php44
1 files changed, 34 insertions, 10 deletions
diff --git a/db/migrations/1.246_consultations.php b/db/migrations/1.246_consultations.php
index 1d9fa89..6b31373 100644
--- a/db/migrations/1.246_consultations.php
+++ b/db/migrations/1.246_consultations.php
@@ -134,7 +134,7 @@ class Consultations extends Migration
if ($statement->rowCount() !== 2) {
$this->announce('Unable to migrate SprechstundenPlugin data due to incompatible database format');
- return false;
+ return;
}
@@ -280,30 +280,54 @@ class Consultations extends Migration
FROM `SprechstundenAnmeldung`";
DBManager::get()->exec($query);
- // Activate consultations if plugin was enabled
- $query = "SELECT `enabled` = 'yes'
+ // Get old plugin info
+ $query = "SELECT `pluginid`, `enabled` = 'yes' AS is_active, `pluginpath`
FROM `plugins`
WHERE `pluginclassname` = 'SprechstundenPlugin'";
- $enabled = (bool) DBManager::get()->query($query)->fetchColumn();
+ $info = DBManager::get()->query($query)->fetch(PDO::FETCH_ASSOC);
- if (!$enabled) {
+ if (!$info) {
return;
}
- $query = "INSERT INTO `config_values` (
+ // Active consultations if plugin was activated
+ if ($info['is_active']) {
+ $query = "INSERT INTO `config_values` (
`field`, `range_id`, `value`,
`mkdate`, `chdate`, `comment`
) VALUES (
'CONSULTATION_ENABLED', 'studip', '1',
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(), ''
)";
- DBManager::get()->exec($query);
+ DBManager::get()->exec($query);
+ }
- // Deactivate plugin
- $query = "UPDATE `plugins`
- SET `enabled` = 'no'
+ // Remove plugin from database
+ $query = "DELETE FROM `plugins`
WHERE `pluginclassname` = 'SprechstundenPlugin'";
DBManager::get()->exec($query);
+
+ DBManager::get()->execute("DELETE FROM plugins_activated WHERE pluginid = ?", [$info['pluginid']]);
+ DBManager::get()->execute("DELETE FROM roles_plugins WHERE pluginid = ?", [$info['pluginid']]);
+
+ // Delete plugin files
+ $plugin_path = "{$GLOBALS['PLUGINS_PATH']}/{$info['pluginpath']}";
+ if (file_exists($plugin_path)) {
+ @rmdirr($plugin_path);
+ }
+
+ // Delete old plugin tables
+ $query = "DROP TABLE IF EXISTS `SprechstundenAnmeldung`";
+ DBManager::get()->exec($query);
+
+ $query = "DROP TABLE IF EXISTS `SprechstundenTermin`";
+ DBManager::get()->exec($query);
+
+ $query = "DROP TABLE IF EXISTS `SprechstundenTerminDesc`";
+ DBManager::get()->exec($query);
+
+ $query = "DROP TABLE IF EXISTS `SprechstundenZeitSlot`";
+ DBManager::get()->exec($query);
}
private function adjustTimestamp($current, $other)