aboutsummaryrefslogtreecommitdiff
path: root/lib/models/Courseware/Task.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/models/Courseware/Task.php')
-rw-r--r--lib/models/Courseware/Task.php22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/models/Courseware/Task.php b/lib/models/Courseware/Task.php
index d409676..2a1a28d 100644
--- a/lib/models/Courseware/Task.php
+++ b/lib/models/Courseware/Task.php
@@ -21,6 +21,7 @@ use User;
* @property int $submitted database column
* @property string|null $renewal database column
* @property int $renewal_date database column
+ * @property int $visible database column
* @property int|null $feedback_id database column
* @property int $mkdate database column
* @property int $chdate database column
@@ -90,6 +91,11 @@ class Task extends \SimpleORMap
parent::configure($config);
}
+ public function getTaskGroup(): TaskGroup
+ {
+ return $this->task_group;
+ }
+
/**
* Returns the structural element of this task.
* This structural element and all its children are part of the task.
@@ -130,6 +136,16 @@ class Task extends \SimpleORMap
if ($this->solver_id === $user->id) {
return true;
}
+
+ if ($this->visible) {
+ $solvers = $this->getTaskGroup()->getSolvers();
+ foreach ($solvers as $solver) {
+ if ($solver->id === $user->id) {
+ return true;
+ }
+ }
+ }
+
break;
case 'group':
@@ -235,6 +251,12 @@ class Task extends \SimpleORMap
$this->store();
}
+ public function setVisibility(bool $visibility): void
+ {
+ $this->visible = (int) $visibility;
+ $this->store();
+ }
+
private function getStructuralElementProgress(StructuralElement $structural_element): float
{
$containers = Container::findBySQL('structural_element_id = ?', [intval($structural_element->id)]);