aboutsummaryrefslogtreecommitdiff
path: root/lib/models/Courseware/Instance.php
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2022-04-05 11:49:30 +0200
committerRon Lucke <lucke@elan-ev.de>2022-04-22 07:18:14 +0000
commit4494de247d20caa7cd64da7e90be82283751e6b2 (patch)
tree9e1a78fd5da84a150280110638701b23999ebbc0 /lib/models/Courseware/Instance.php
parent9fc9db5df36976c85ef0f17a423f058c68dfc1c3 (diff)
fix #832 for v5.0
Diffstat (limited to 'lib/models/Courseware/Instance.php')
-rwxr-xr-xlib/models/Courseware/Instance.php40
1 files changed, 37 insertions, 3 deletions
diff --git a/lib/models/Courseware/Instance.php b/lib/models/Courseware/Instance.php
index c823a4e..9776ed1 100755
--- a/lib/models/Courseware/Instance.php
+++ b/lib/models/Courseware/Instance.php
@@ -13,7 +13,32 @@ namespace Courseware;
*/
class Instance
{
- public static function deleteForRange(\Range $range): void
+ /**
+ * @param \Range $range
+ * @return ?static
+ */
+ public static function existsForRange(\Range $range)
+ {
+ switch ($range->getRangeType()) {
+ case 'course':
+ case 'user':
+ $result = \DBManager::get()->fetchOne(
+ 'SELECT COUNT(*) as count FROM cw_structural_elements WHERE range_id = ? AND range_type = ? AND parent_id IS NULL',
+ [$range->getRangeId(), $range->getRangeType()]
+ );
+
+ return ((int) $result['count']) == 1;
+
+ default:
+ throw new \InvalidArgumentException('Only ranges of type "user" and "course" are currently supported.');
+ }
+ }
+
+ /**
+ * @param \Range $range
+ * @return ?static
+ */
+ public static function findForRange(\Range $range)
{
$root = null;
switch ($range->getRangeType()) {
@@ -29,10 +54,18 @@ class Instance
// there is no courseware for this course
if (!$root) {
- return;
+ return null;
}
- $instance = new self($root);
+ return new self($root);
+ }
+
+ public static function deleteForRange(\Range $range): void
+ {
+ $instance = self::findForRange($range);
+ if (!$instance) {
+ return;
+ }
$range->getConfiguration()->delete('COURSEWARE_SEQUENTIAL_PROGRESSION');
$range->getConfiguration()->delete('COURSEWARE_EDITING_PERMISSION');
@@ -54,6 +87,7 @@ class Instance
\UserConfig::get($config->range_id)->store('COURSEWARE_LAST_ELEMENT', $arr);
}
+ $root = self::getRoot();
$root->delete();
}