From 5c26971b5f68db11a045fd582a52e6200b80a397 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Tue, 15 Nov 2022 12:13:33 +0000 Subject: [PATCH] adjust migration 246 in order to remove the consultation plugin completely, fixes #1731 Closes #1731 Merge request studip/studip!1131 --- db/migrations/1.246_consultations.php | 44 +++++++++++++++++++++------ 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/db/migrations/1.246_consultations.php b/db/migrations/1.246_consultations.php index 1d9fa893206..6b31373bb39 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) -- GitLab