aboutsummaryrefslogtreecommitdiff
path: root/lib/models/Courseware/StructuralElement.php
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2024-01-10 14:20:49 +0000
committerRon Lucke <lucke@elan-ev.de>2024-01-10 14:20:49 +0000
commit7293abbad9c1a149cfffd99c9ab5060fe945b773 (patch)
tree6e80b665c4cda71829570e6f0925f4d876e25fde /lib/models/Courseware/StructuralElement.php
parent874bd358f5ecc2e148a6ad36bcf155fe738c107a (diff)
StEP #2472
Merge request studip/studip!2296
Diffstat (limited to 'lib/models/Courseware/StructuralElement.php')
-rw-r--r--lib/models/Courseware/StructuralElement.php47
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]
+ );
+ }
}