diff options
| author | Ron Lucke <lucke@elan-ev.de> | 2023-02-20 16:03:28 +0000 |
|---|---|---|
| committer | Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> | 2023-02-20 16:03:28 +0000 |
| commit | fc949d259d6e2b1b2ae631d6affa38b5abce0e90 (patch) | |
| tree | de50929d82f4eca655cd64fa3e51bade6449991a /lib/modules/CoursewareModule.class.php | |
| parent | 4f98178a4c51a56e3a554c20e07cd2015448b719 (diff) | |
fix #2048
Closes #2048
Merge request studip/studip!1416
Diffstat (limited to 'lib/modules/CoursewareModule.class.php')
| -rw-r--r-- | lib/modules/CoursewareModule.class.php | 46 |
1 files changed, 20 insertions, 26 deletions
diff --git a/lib/modules/CoursewareModule.class.php b/lib/modules/CoursewareModule.class.php index 76280e6..7b96c55 100644 --- a/lib/modules/CoursewareModule.class.php +++ b/lib/modules/CoursewareModule.class.php @@ -65,32 +65,26 @@ class CoursewareModule extends CorePlugin implements SystemPlugin, StudipModule, */ public function getIconNavigation($courseId, $last_visit, $user_id) { - $new = 0; - $course_elements = Courseware\StructuralElement::findBySQL( - 'range_type = ? AND range_id = ?', - ['course', $courseId] - ); - foreach($course_elements as $element) { - $has_new_blocks = false; - $containers = $element->containers->getArrayCopy(); - foreach($containers as $container) { - $blocks = $container->blocks->getArrayCopy(); - foreach($blocks as $block) { - if ( - $block->editor_id !== $user_id - && - $block->chdate >= $last_visit - && - $block->payload !== '' - ) { - $has_new_blocks = true; - } - } - } - if($has_new_blocks) { - $new++; - } - } + $statement = DBManager::get()->prepare(" + SELECT COUNT(DISTINCT elem.id) + FROM `cw_structural_elements` AS elem + INNER JOIN `cw_containers` as container ON (elem.id = container.structural_element_id) + INNER JOIN `cw_blocks` as blocks ON (container.id = blocks.container_id) + WHERE elem.range_type = 'course' + AND elem.range_id = :range_id + AND blocks.payload != '' + AND blocks.chdate > :last_visit + AND blocks.editor_id != :user_id + "); + + $statement->execute([ + 'range_id' => $courseId, + 'last_visit' => $last_visit, + 'user_id' => $user_id + ]); + + $new = $statement->fetchColumn(); + $nav = new Navigation(_('Courseware'), 'dispatch.php/course/courseware'); $nav->setImage(Icon::create('courseware', Icon::ROLE_CLICKABLE), [ 'title' => _('Courseware'), |
