From 6beff10b4c44993b6afc0677d502a7b6129e4698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arne=20Schr=C3=B6der=2C=20M=2E=20A=2E?= Date: Fri, 24 Jan 2025 15:33:00 +0000 Subject: Resolve "Polishing: Hilfe-Tour "Was ist neu in Stud.IP 6.0"" Closes #5126 Merge request studip/studip!3873 --- db/migrations/6.0.43_tic_5126.php | 127 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 db/migrations/6.0.43_tic_5126.php diff --git a/db/migrations/6.0.43_tic_5126.php b/db/migrations/6.0.43_tic_5126.php new file mode 100644 index 0000000..8a5e1f6 --- /dev/null +++ b/db/migrations/6.0.43_tic_5126.php @@ -0,0 +1,127 @@ +prepare(" + SELECT COUNT(*) + FROM `help_tour_steps` WHERE tour_id = ? AND `chdate` > `mkdate` + "); + $statement->execute([$tour_id]); + $changed = $statement->fetch(PDO::FETCH_COLUMN, 0); + if (!$changed) { + $statement = DBManager::get()->prepare(" + SELECT COUNT(*) + FROM `help_tour_settings` WHERE tour_id = ? AND `chdate` > `mkdate` + "); + $statement->execute([$tour_id]); + $changed = $statement->fetch(PDO::FETCH_COLUMN, 0); + } + return $changed > 0; + } + + public function removeTour($tour_id, $remove_user_data = false) { + $statement = DBManager::get()->prepare(" + DELETE FROM `help_tours` WHERE tour_id = ?; + "); + $statement->execute([$tour_id]); + $statement = DBManager::get()->prepare(" + DELETE FROM `help_tour_steps` WHERE tour_id = ?; + "); + $statement->execute([$tour_id]); + $statement = DBManager::get()->prepare(" + DELETE FROM `help_tour_audiences` WHERE tour_id = ?; + "); + $statement->execute([$tour_id]); + $statement = DBManager::get()->prepare(" + DELETE FROM `help_tour_settings` WHERE tour_id = ?; + "); + $statement->execute([$tour_id]); + if ($remove_user_data) { + $statement = DBManager::get()->prepare(" + DELETE FROM `help_tour_user` WHERE tour_id = ?; + "); + $statement->execute([$tour_id]); + } + } + + public function updateTour($tour_id, $tour, $settings, $steps) { + $tour_changed = $this->isTourChanged($tour_id); + if ($tour_changed) { + $old_tour_id = md5(uniqid('tours', 1)); + $query = "UPDATE `help_tours` SET `tour_id` = :old_tour_id, `name` = CONCAT(`name`, ' (outdated)') WHERE `tour_id` = :tour_id"; + DBManager::get()->execute($query, [ + 'old_tour_id' => $old_tour_id, + 'tour_id' => $tour_id, + ]); + + $query = "UPDATE `help_tour_steps` SET `tour_id` = :old_tour_id WHERE `tour_id` = :tour_id"; + DBManager::get()->execute($query, [ + 'old_tour_id' => $old_tour_id, + 'tour_id' => $tour_id, + ]); + + $query = "UPDATE `help_tour_audiences` SET `tour_id` = :old_tour_id WHERE `tour_id` = :tour_id"; + DBManager::get()->execute($query, [ + 'old_tour_id' => $old_tour_id, + 'tour_id' => $tour_id, + ]); + + $query = "UPDATE `help_tour_settings` SET `tour_id` = :old_tour_id, `active` = 0 WHERE `tour_id` = :tour_id"; + DBManager::get()->execute($query, [ + 'old_tour_id' => $old_tour_id, + 'tour_id' => $tour_id, + ]); + + $query = "UPDATE `help_tour_user` SET `tour_id` = :old_tour_id WHERE `tour_id` = :tour_id"; + DBManager::get()->execute($query, [ + 'old_tour_id' => $old_tour_id, + 'tour_id' => $tour_id, + ]); + } else { + $this->removeTour($tour_id, true); + }; + + $query = "INSERT INTO `help_tours` (`global_tour_id`, `tour_id`, `name`, `description`, `type`, `roles`, `version`, `language`, `studip_version`, `installation_id`, `author_email`, `mkdate`, `chdate`) VALUES " . $tour; + $statement = DBManager::get()->prepare($query); + $statement->execute(['tour_id' => $tour_id]); + + $query = "INSERT INTO `help_tour_settings` (`tour_id`, `active`, `access`, `mkdate`, `chdate`) VALUES " . $settings; + $statement = DBManager::get()->prepare($query); + $statement->execute(['tour_id' => $tour_id]); + + $query = "INSERT INTO `help_tour_steps` (`tour_id`, `step`, `title`, `tip`, `orientation`, `interactive`, `css_selector`, `route`, `action_prev`, `action_next`, `author_email`, `mkdate`, `chdate`) VALUES " . $steps; + $statement = DBManager::get()->prepare($query); + $statement->execute(['tour_id' => $tour_id]); + } + + public function up() + { + // remove old tour "Stud.IP 5! for tutor and above" + $this->removeTour('a848744bde4dac47ec2e8b383155381d', true); + + // add new tour "Willkommen in Stud.IP 6!" + $tour_id = 'dac47ec2e8a848744bde4b3881d31553'; + $tour = "(:tour_id, :tour_id, 'Willkommen in Stud.IP 6!', 'Einführung in Stud.IP 6', 'tour', 'autor,tutor,dozent', 1, 'de', '6.0', '', '', 1737728592, 0)"; + $settings = "(:tour_id, 1, 'autostart_once', NULL, NULL)"; + $steps = "(:tour_id, 1, 'Willkommen in Stud.IP 6!', \"In den folgenden Schritten möchten wir Ihnen kurz die wichtigsten Neuerungen vorstellen. Dazu klicken Sie auf \\\"weiter\\\" und folgen dem +Ablauf.\r\n\r\nDer Zeitpunkt passt gerade nicht? Kein Problem! Mit einem Klick auf das Fragezeichen-Icon oben rechts können Sie die Tour zu jedem Zeitpunkt erneut starten.\", 'B', 0, '', 'dispatch.php/start', '', '', '', 1737728592, 0), + (:tour_id, 2, 'Neue Loginseite', \"Die neue Loginseite haben Sie eben schon gesehen.\r\nDas einladende neue Design bietet Raum für wichtige News und Hinweise.\", 'B', 0, '', 'dispatch.php/start', '', '', '', 1737728592, 0), + (:tour_id, 3, '', 'Erstellen und verwalten Sie Aufgabenblätter in Ihrem Arbeitsplatz, direkt in Ihren Veranstaltungen oder fügen Sie sie in Courseware hinzu.', 'T', 0, '#content .content-item-vips', 'dispatch.php/contents/overview', '', '', '', 1737728592, 0), + (:tour_id, 4, '', 'So können semesterbegleitende Tests und Lernstandskontrollen, aber auch Studienleistungen und sogar Prüfungen direkt in Stud.IP durchgeführt werden. Probieren Sie es einfach mal aus!', 'B', 0, '', 'dispatch.php/contents/overview', '', '', '', 1737728592, 0), + (:tour_id, 5, '', 'Entdecken Sie Studiengruppen ganz neu! Mit dem neuen Startseiten-Widget haben Sie den Überblick. Verknüpfen Sie Studiengruppen nun direkt mit Veranstaltungen und tauschen Sie sich in Lerngruppen aus.', 'B', 0, '#nav_browse_my_studygroups A:eq(0) SPAN:eq(0)', 'dispatch.php/my_studygroups', '', '', '', 1737728592, 0), + (:tour_id, 6, '', 'Stundenplan und Kalender wurden ebenfalls überarbeitet, bieten einige geänderte Funktionen und kommen im frischen Design von Stud.IP 6.', 'B', 0, '', 'dispatch.php/calendar/schedule', '', '', '', 1737728592, 0), + (:tour_id, 7, '', 'Viel Spaß beim Entdecken!', 'B', 0, '', 'dispatch.php/start', '', '', '', 1737728592, 0)"; + $this->updateTour($tour_id, $tour, $settings, $steps); + } + + public function down() + { + + } + +} \ No newline at end of file -- cgit v1.0