diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2024-01-10 14:20:49 +0000 |
|---|---|---|
| committer | Ron Lucke <lucke@elan-ev.de> | 2024-01-10 14:20:49 +0000 |
| commit | 7293abbad9c1a149cfffd99c9ab5060fe945b773 (patch) | |
| tree | 6e80b665c4cda71829570e6f0925f4d876e25fde /lib/models/Courseware/StructuralElement.php | |
| parent | 874bd358f5ecc2e148a6ad36bcf155fe738c107a (diff) | |
StEP #2472
Merge request studip/studip!2296
Diffstat (limited to 'lib/models/Courseware/StructuralElement.php')
| -rw-r--r-- | lib/models/Courseware/StructuralElement.php | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php index a63c73f..35a0184 100644 --- a/lib/models/Courseware/StructuralElement.php +++ b/lib/models/Courseware/StructuralElement.php @@ -53,7 +53,7 @@ use User; * @property Task $task has_one Task * @property mixed $image additional field */ -class StructuralElement extends \SimpleORMap implements \PrivacyObject +class StructuralElement extends \SimpleORMap implements \PrivacyObject, \FeedbackRange { protected static function configure($config = []) { @@ -151,6 +151,7 @@ class StructuralElement extends \SimpleORMap implements \PrivacyObject if (is_a($image, \FileRef::class)) { $image->delete(); } + \FeedbackElement::deleteBySQL('range_id = ? AND range_type = ?', [$this->id, self::class]); } /** @@ -1195,4 +1196,48 @@ SQL; ]); } } + + public function getRangeCourseId(): string + { + return $this->range_id; + } + + public function getRangeName(): string + { + return $this->title; + } + + public function getRangeIcon($role): string + { + return \Icon::create('courseware', $role); + } + + public function getRangeUrl(): string + { + $unit = $this->findUnit(); + + if ($this->range_type === 'user') { + return 'contents/courseware/courseware/' . $unit->id . '#/structural_element/' . $this->id; + } + + return 'course/courseware/courseware/' . $unit->id . '?cid=' . $this->range_id . '#/structural_element/' . $this->id; + } + + public function isRangeAccessible(string $user_id = null): bool + { + $user = \User::find($user_id); + if ($user) { + return $this->canRead($user); + } + + return false; + } + + public function getFeedbackElement() + { + return \FeedbackElement::findOneBySQL( + 'range_id = ? AND range_type = ?', + [$this->id, self::class] + ); + } } |
