From 6ebb7cfd4a6ad82265e4bb2f64619909cd3e850b Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Mon, 9 Oct 2023 08:35:29 +0000 Subject: [PATCH] fixes #3282 Closes #3282 Merge request studip/studip!2217 --- .../5.1.51_cleanup_resource_properties.php | 22 +++++++++++++++++++ .../ResourcePropertyDefinition.class.php | 7 ++++++ 2 files changed, 29 insertions(+) create mode 100644 db/migrations/5.1.51_cleanup_resource_properties.php diff --git a/db/migrations/5.1.51_cleanup_resource_properties.php b/db/migrations/5.1.51_cleanup_resource_properties.php new file mode 100644 index 00000000000..ac8042533b5 --- /dev/null +++ b/db/migrations/5.1.51_cleanup_resource_properties.php @@ -0,0 +1,22 @@ +<?php +/** + * @see https://gitlab.studip.de/studip/studip/-/issues/3282 + */ +final class CleanupResourceProperties extends Migration +{ + public function description() + { + return 'Removes orphaned rows from table "resource_properties" with no ' + . 'definition in table "resource_property_definitions"'; + } + + protected function up() + { + $query = "DELETE FROM `resource_properties` + WHERE `property_id` NOT IN ( + SELECT `property_id` + FROM `resource_property_definitions` + )"; + DBManager::get()->exec($query); + } +} diff --git a/lib/models/resources/ResourcePropertyDefinition.class.php b/lib/models/resources/ResourcePropertyDefinition.class.php index e72717f6dd8..3525e413bde 100644 --- a/lib/models/resources/ResourcePropertyDefinition.class.php +++ b/lib/models/resources/ResourcePropertyDefinition.class.php @@ -55,6 +55,13 @@ class ResourcePropertyDefinition extends SimpleORMap 'class_name' => ResourcePropertyGroup::class, 'foreign_key' => 'property_group_id' ]; + + $config['has_many']['properties'] = [ + 'class_name' => ResourceProperty::class, + 'assoc_foreign_key' => 'property_id', + 'on_delete' => 'delete', + ]; + $config['i18n_fields']['display_name'] = true; $config['i18n_fields']['description'] = true; -- GitLab