aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2023-06-02 09:17:04 +0000
committerJan-Hendrik Willms <tleilax+github@gmail.com>2023-06-02 11:21:14 +0200
commitaf8cbfaf0de079a1d8fb9eaf4ca9c2de74d2c954 (patch)
tree58efd83d7937e7ba1471927c4f85f4634cecc1c4 /lib
parentcc1167a0858554f054d3c0ae883d7abf5c7db4a7 (diff)
remove all consultation responsibilities upon range deletion and clean up db table, fixes #2673
Closes #2673 Merge request studip/studip!1813
Diffstat (limited to 'lib')
-rw-r--r--lib/models/ConsultationResponsibility.php43
-rw-r--r--lib/models/Institute.class.php8
-rw-r--r--lib/models/Statusgruppen.php14
-rw-r--r--lib/models/User.class.php12
4 files changed, 77 insertions, 0 deletions
diff --git a/lib/models/ConsultationResponsibility.php b/lib/models/ConsultationResponsibility.php
index 9634d41..72cd12e 100644
--- a/lib/models/ConsultationResponsibility.php
+++ b/lib/models/ConsultationResponsibility.php
@@ -25,6 +25,49 @@ class ConsultationResponsibility extends SimpleORMap
}
/**
+ * Finds all responsibilities for a given user id.
+ *
+ * @param string $user_id
+ * @return array
+ */
+ public static function findByUserId(string $user_id): array
+ {
+ return self::findBySQL(
+ "range_id = ? AND range_type = 'user'",
+ [$user_id]
+ );
+ }
+
+ /**
+ * Finds all responsibilities for a given institute id.
+ *
+ * @param string $institute_id
+ * @return array
+ */
+ public static function findByInstituteId(string $institute_id): array
+ {
+ return self::findBySQL(
+ "range_id = ? AND range_type = 'institute'",
+ [$institute_id]
+ );
+ }
+
+ /**
+ * Finds all responsibilities for a given statusgroup id.
+ *
+ * @param string $statusgroup_id
+ *
+ * @return array
+ */
+ public static function findByStatusgroupId(string $statusgroup_id): array
+ {
+ return self::findBySQL(
+ "range_id = ? AND range_type = 'statusgroup'",
+ [$statusgroup_id]
+ );
+ }
+
+ /**
* Returns the name of the associated responsibility.
*
* @return string
diff --git a/lib/models/Institute.class.php b/lib/models/Institute.class.php
index 9e662cc..b6ec72b 100644
--- a/lib/models/Institute.class.php
+++ b/lib/models/Institute.class.php
@@ -37,6 +37,9 @@
* @property SimpleORMapCollection datafields has_many DatafieldEntryModel
* @property Institute faculty belongs_to Institute
* @property SimpleORMapCollection courses has_and_belongs_to_many Course
+ *
+ * @property ConsultationBlock[]|SimpleORMapCollection $consultation_blocks
+ * @property ConsultationResponsibility[]|SimpleORMapCollection $consultation_responsibilities
*/
class Institute extends SimpleORMap implements Range
@@ -112,6 +115,11 @@ class Institute extends SimpleORMap implements Range
'assoc_foreign_key' => 'range_id',
'on_delete' => 'delete',
];
+ $config['has_many']['consultation_responsibilities'] = [
+ 'class_name' => ConsultationResponsibility::class,
+ 'assoc_func' => 'findByInstituteId',
+ 'on_delete' => 'delete',
+ ];
$config['has_many']['tools'] = [
'class_name' => ToolActivation::class,
'assoc_foreign_key' => 'range_id',
diff --git a/lib/models/Statusgruppen.php b/lib/models/Statusgruppen.php
index 7520c97..620a02f 100644
--- a/lib/models/Statusgruppen.php
+++ b/lib/models/Statusgruppen.php
@@ -36,6 +36,9 @@
* @property Course course belongs_to course
* @property Institute institute belongs_to institute
* @property User user belongs_to user
+ *
+ * @property ConsultationBlock[]|SimpleORMapCollection $consultation_blocks
+ * @property ConsultationResponsibility[]|SimpleORMapCollection $consultation_responsibilities
*/
class Statusgruppen extends SimpleORMap implements PrivacyObject
{
@@ -77,6 +80,17 @@ class Statusgruppen extends SimpleORMap implements PrivacyObject
'on_store' => 'store',
'on_delete' => 'delete'
];
+ $config['has_many']['consultation_blocks'] = [
+ 'class_name' => ConsultationBlock::class,
+ 'assoc_foreign_key' => 'range_id',
+ 'on_delete' => 'delete',
+ ];
+ $config['has_many']['consultation_responsibilities'] = [
+ 'class_name' => ConsultationResponsibility::class,
+ 'assoc_func' => 'findByStatusgroupId',
+ 'on_delete' => 'delete',
+ ];
+
$config['additional_fields']['children'] = true;
$config['default_values']['position'] = null;
diff --git a/lib/models/User.class.php b/lib/models/User.class.php
index 2acdea4..2065636 100644
--- a/lib/models/User.class.php
+++ b/lib/models/User.class.php
@@ -68,6 +68,13 @@
* @property UserInfo info has_one UserInfo
* @property UserOnline online has_one UserOnline
* @property Kategorie[]|SimpleORMapCollection $profile_categories has_many Kategorie
+<<<<<<< HEAD
+=======
+ * @property UserDomain[]|SimpleORMapCollection $domains
+ * @property ConsultationBlock[]|SimpleORMapCollection $consultation_blocks
+ * @property ConsultationBooking[]|SimpleORMapCollection $consultation_bookings
+ * @property ConsultationResponsibility[]|SimpleORMapCollection $consultation_responsibilities
+>>>>>>> cc4a9f0d2f (remove all consultation responsibilities upon range deletion and clean up db table, fixes #2673)
*
* @property UserConfig config
*/
@@ -161,6 +168,11 @@ class User extends AuthUserMd5 implements Range, PrivacyObject
'class_name' => ConsultationBooking::class,
'on_delete' => 'delete',
];
+ $config['has_many']['consultation_responsibilities'] = [
+ 'class_name' => ConsultationResponsibility::class,
+ 'assoc_func' => 'findByUserId',
+ 'on_delete' => 'delete',
+ ];
$config['has_many']['mvv_assignments'] = [
'class_name' => MvvContact::class,