aboutsummaryrefslogtreecommitdiff
path: root/lib/modules/CoursewareModule.class.php
diff options
context:
space:
mode:
authorRon Lucke <lucke@elan-ev.de>2023-02-20 16:03:28 +0000
committerElmar Ludwig <elmar.ludwig@uni-osnabrueck.de>2023-02-20 16:03:28 +0000
commitfc949d259d6e2b1b2ae631d6affa38b5abce0e90 (patch)
treede50929d82f4eca655cd64fa3e51bade6449991a /lib/modules/CoursewareModule.class.php
parent4f98178a4c51a56e3a554c20e07cd2015448b719 (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.php46
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'),