From 4db6ca292d32bc17d13bdc379cda11abd989455d Mon Sep 17 00:00:00 2001
From: Rami Jasim <rami.jasim1@uni-oldenburg.de>
Date: Tue, 20 May 2025 13:51:42 +0200
Subject: [PATCH] implement getMany

---
 ExcalidrawPlugin.php | 26 +++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/ExcalidrawPlugin.php b/ExcalidrawPlugin.php
index 34b6035..d399995 100644
--- a/ExcalidrawPlugin.php
+++ b/ExcalidrawPlugin.php
@@ -1,6 +1,26 @@
 <?php
 
-class ExcalidrawPlugin extends StudIPPlugin implements StandardPlugin, SystemPlugin
+if (
+    interface_exists(StudipModuleExtended::class)
+    && trait_exists(IconNavigationTrait::class)
+) {
+    abstract class ExcalidrawBasePlugin extends StudIPPlugin implements StudipModuleExtended
+    {
+        use IconNavigationTrait;
+    }
+} else {
+    abstract class ExcalidrawBasePlugin extends StudIPPlugin
+    {
+        abstract public function getManyIconNavigation(array $course_ids, ?string $user_id = null): array;
+
+        public function getIconNavigation($course_id, $last_visit, $user_id)
+        {
+            return $this->getManyIconNavigation([$course_id], $user_id)[$course_id] ?? null;
+        }
+    }
+}
+
+class ExcalidrawPlugin extends ExcalidrawBasePlugin implements StandardPlugin, SystemPlugin
 {
     public function __construct()
     {
@@ -37,14 +57,14 @@ class ExcalidrawPlugin extends StudIPPlugin implements StandardPlugin, SystemPlu
         return array('excalidraw' => $tab);
     }
 
-    public function getIconNavigation($course_id, $last_visit, $user_id)
+    public function getManyIconNavigation(array $course_ids, ?string $user_id = null): array
     {
         $navigation = new Navigation(
             $this->_('Whiteboard (Beta)'),
             PluginEngine::getURL($this, [], "excalidraw/overview")
         );
         $navigation->setImage(Icon::create('block-canvas', Icon::ROLE_CLICKABLE));
-        return $navigation;
+        return array_fill_keys($course_ids, $navigation);
     }
 
     public function getNotificationObjects($course_id, $since, $user_id)
-- 
GitLab