diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2022-04-05 11:49:30 +0200 |
|---|---|---|
| committer | Ron Lucke <lucke@elan-ev.de> | 2022-04-22 07:18:14 +0000 |
| commit | 4494de247d20caa7cd64da7e90be82283751e6b2 (patch) | |
| tree | 9e1a78fd5da84a150280110638701b23999ebbc0 /lib/models/Courseware/Instance.php | |
| parent | 9fc9db5df36976c85ef0f17a423f058c68dfc1c3 (diff) | |
fix #832 for v5.0
Diffstat (limited to 'lib/models/Courseware/Instance.php')
| -rwxr-xr-x | lib/models/Courseware/Instance.php | 40 |
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(); } |
