aboutsummaryrefslogtreecommitdiff
path: root/lib/models/Courseware/StructuralElement.php
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2021-10-04 17:01:06 +0000
committerElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2021-10-04 17:01:06 +0000
commit0061c6be014723dc0e3d8df7056d905e19273790 (patch)
treef369ce67af3b3502177a66ec5f42ba1d15254387 /lib/models/Courseware/StructuralElement.php
parentce90b8f1be72906386ee38f0774a1d04ed6e2ff3 (diff)
fixes #253
Diffstat (limited to 'lib/models/Courseware/StructuralElement.php')
-rwxr-xr-xlib/models/Courseware/StructuralElement.php28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php
index a2698e1..0637bd7 100755
--- a/lib/models/Courseware/StructuralElement.php
+++ b/lib/models/Courseware/StructuralElement.php
@@ -238,6 +238,10 @@ class StructuralElement extends \SimpleORMap
return true;
}
+ if (!$this->releasedForReaders($this)) {
+ return false;
+ }
+
if (!count($this->read_approval)) {
return $this->canReadSequential($user);
}
@@ -283,6 +287,30 @@ class StructuralElement extends \SimpleORMap
}
/**
+ * @return bool true if the user may read this instance in time interval
+ *
+ * @SuppressWarnings(PHPMD.Superglobals)
+ */
+ private function releasedForReaders(StructuralElement $element): bool
+ {
+ $released = false;
+ if (!$element->release_date || $element->release_date <= time()) {
+ $released = true;
+ }
+
+ if ($element->withdraw_date && $element->withdraw_date <= time()) {
+ $released = false;
+ }
+
+ $parent_released = true;
+ if (!$element->isRootNode()) {
+ $parent_released = $this->releasedForReaders($element->parent);
+ }
+
+ return $released && $parent_released;
+ }
+
+ /**
* @param mixed $user the user to validate
*
* @return bool true if the user has achieved previous elements