From 7c79dab1970770fc69deabb17ac108c82e7d6f3b Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Tue, 23 Sep 2025 11:21:22 +0200 Subject: set parent_id to null when deleting wiki pages and add migration that fixes invalid entries, fixes #5832 Closes #5832 Merge request studip/studip!4447 --- db/migrations/5.5.35_cleanup_wiki_page_parent_id.php | 18 ++++++++++++++++++ lib/models/WikiPage.php | 10 +++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 db/migrations/5.5.35_cleanup_wiki_page_parent_id.php diff --git a/db/migrations/5.5.35_cleanup_wiki_page_parent_id.php b/db/migrations/5.5.35_cleanup_wiki_page_parent_id.php new file mode 100644 index 0000000..a374429 --- /dev/null +++ b/db/migrations/5.5.35_cleanup_wiki_page_parent_id.php @@ -0,0 +1,18 @@ +execute($query); + } +} diff --git a/lib/models/WikiPage.php b/lib/models/WikiPage.php index b8982d8..57d9899 100644 --- a/lib/models/WikiPage.php +++ b/lib/models/WikiPage.php @@ -24,8 +24,8 @@ * @property string|null $locked_by_user_id database column * @property int $chdate database column * @property int $mkdate database column - * @property SimpleORMapCollection $versions - * @property SimpleORMapCollection $onlineeditingusers + * @property SimpleORMapCollection $versions + * @property SimpleORMapCollection $onlineeditingusers * @property User $user belongs_to User * @property Course $course belongs_to Course * @property-read (WikiPage | null) $parent additional field @@ -88,12 +88,16 @@ class WikiPage extends SimpleORMap implements PrivacyObject ]; $config['registered_callbacks']['before_store'][] = 'createVersion'; + $config['registered_callbacks']['after_delete'][] = function (WikiPage $page) { + $query = "UPDATE `wiki_pages` SET `parent_id` = NULL WHERE `parent_id` = ?"; + DBManager::get()->execute($query, [$page->id]); + }; + $config['default_values']['last_author'] = 'nobody'; parent::configure($config); } - protected function createVersion() { $last_version = $this->versions[0]; -- cgit v1.0