From 10a2311897593a842945b7f4c4ff607f439ff1d6 Mon Sep 17 00:00:00 2001
From: Kurzenberger <01kuni1bif@hft-stuttgart.de>
Date: Fri, 18 Oct 2024 14:00:29 +0200
Subject: [PATCH] adjusted for the "mark as done" Button

---
 dta.zip                  | Bin 32527 -> 33005 bytes
 dta/classes/database.php |  59 +++++++++++++++++++++++++++++++--------
 2 files changed, 47 insertions(+), 12 deletions(-)

diff --git a/dta.zip b/dta.zip
index 806f286e97041a2790c23cc5984d4f2ce657f6f2..b63cd5fd0c2660cc8626519f46958bd7ae94f5df 100644
GIT binary patch
delta 3320
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
U+BmfO_YUmcU}azpKKx1fADamaDgXcg

delta 2917
zcmZuzc{r47A0CD=j3pU^iP2cHW@coftRY0mk~P_lecu@)%Sc4L*(s4Nq(&lgvXu}H
zLe`3*WI4zeDtyg2r|Vqb^}W~iyzlcqzx(&Qf6x6qf849r7}NI|ZpnZ}u5o3^8GwbZ
zb3KlB-~{s;a@N1+{LVz1WX8hl*LgPh=!;aDAB^<LoLn#?<X0A9ojC({jMLK7*c$Zr
z<BkRraiXMbV@|?9BP1LKVqp3V27&0WQEO|zDV-xR+jaa<h%8Im)-6Sefa>phOgj(6
zO0kSu#jmrT^l!GUnWi0~z6f)B2G7Y!gZr4MzWo^J7MkWK_pKAtBY)=0wj+hgws-~G
z_99sV-xbu9G7mDI?J!-YK7Y^EPYS|hr>JcnDJVOBwTHhl{Gq*S&w!&)#fK<vJ%oRm
z_}wyOk3zV~pXuTW0d1eWGGhrIa4c(NkH#qh>E=9?+KhU;1Om6j8h()w_rt%Bh>(Jy
zzUWDK_AurOoaqYCI-6R{>CaQ@VEk3-Ecn$%YXUF8cK4%QOcHN6<gpmqj${lh9-T|r
zF*2FKLyh@rTJt|95*gNC>)E|xoup_xy3fe)F}ksvzFe$Q5_J<JtCN92E@K}4Y4uLw
z_#t<H^@y1Cu1JA-+ow)>lBg4Lr7lnOA~UX*&Mkgl9$Fx{2>d+#T*&B-39(7QXsxc>
zxhaCb9fV>j?OESk3dP2ClPZShJ9nB{ux|Geq71f$%8DE3SRfapu2fD_3G7vxtJ)v~
zzn9o2YV$I0`@!l)V=bLJnkwA7Fz50R^aFgM7JT{CrOH_rSi|`E_^gON$C&o3hu`^H
zOH20)6m{1jN7<5wWj6&N?l&3q@qB_pRG6`p82W)d&)~tAlThpp5=JCzK=Yww>WD@Z
zxvduxOHS#LZC`ADp{MOvrIjJD9S*AwqXx#ai;^Y9?Pc-#a?VYLc?VgEsau*|@xvZ%
zA{@!72QGi;6h@(!-l@w^c8spDHdwCjeTL#0oJIF$+mtx8j2|*wTj^IZhaVhY6T!Hs
z8jL8CczP@=Imsd<Q{)l;#_^Gjk(n8XEq391Bh=Wc-h{AOOFto87TaD>PTIq6<3?ai
zxs3a!r7yStu76k<k%Z4>7hdbO726HqmoJ!?=3C0$NcM2WTBGqtwjJ7~`q-+T`J7QM
z(Tzl(XdutW-C)5!?`^*-=$9)tQk5FJ$?L`9blY8q?RF6<S3G%mXCNs8xvLF^l~<oI
z`XtX;5n<k}^Y{&3uQbBn!ty^`)1I5EEj%O`_aIg=y)LF6b?WMJ=U-A<#Tl2+Pdl4}
z0SkrZTkh3HOsK8Xrs>HB5H{!Q<E^c)eL6}XIyuF}%<^xZ+M#ftdjWL3mf|w{Fn|8#
zntVe%P&oM?(gmHpz%N#Q&e_!k3!Ul6JBS2{0tIUh(ZS=exU<QnvCbZS>l~Fi)Qdjn
zZhL{?T%XkgTb%A}<xm%j++}zFNE}ComxW|cMp$Rao=d#IV&01ERW-@C_MXv%&VYjF
z-=8(@tGg2Q=2*gN*0<i~HJx>i5qCv9uKV4PZqDPi`6TP&<wvsjhO-Byk;>u<p`pc(
z%`}}Wm~Y~>QMPq%JuRn*mDGKS$dYl4c<IqKANhFaliQDQ<1=Yw?Ue?^<l52?<kA$Z
zUyB^qk?;odvOi+HE4LkN|HHmv%U`4ND?w}|uKYrpKJl(pqFKSKzDGaBQz4uemm$f_
z8*j_JGfBtl+?6JEB{Lp5RA{8|!q*qdaHpS2E?hHlliXl5J1L*wnC{6XY;kna(JiE}
zvP<fxRj-)@PKauuwfgEEIx5OhR{<&a8f@yDRvtXo;ktMtr(4i_-aonVmdUlLKl73h
z9cKn!NsWz$P|%IKW@o1c68FumRAr(kJX)MM@6?h)@mtwN@DzpA5{1H#g84ss3JvQ!
z5o+zC7K<gos>+3$rX^?u`)Yl>u9iLXY7SqgBZ_TE{Y&eF{9<d~{?ssVTjzON@7Eh?
zb^8{U(pO#Isr%-Ce&ki_w9?*RB(3gj`YKR*?mS<GeN8{bmN&HAwb#g}qiN~q^}T$H
zsV`U(*~6Q!#8AhQ{3x!Ozo*iQs_lCt$F)EfQ-pVUzFK~JL!Tw*b_xgUUET&$+ma70
zX!nm&_==iKh{qluhXUd%cdSPD`;sF9HitX1^@q9=x@%=ujsa?x*6p57a@<dDu<k?;
z5Z}ay0I736)u4ru$=Noqs|u7+|BO$fs!h8jt2ifyj|04OS^?e?3<Rua=DX!W6ey<e
zZ9Ze?q<o^5l9Qqp_y?KQAHu-%P8N+|s8PvqYAnFTZ67VT1MrfO-Lqr7Wl@yD$%suq
zS(&Y<s<ZKfI9nNux2C|wUO`HpAZehc(@^=1%6J!~i?^PAG?zlzrHraPQW#aU9U(oK
z4RlaVg#$==vQgP>e0&qrgej<rJ5;hJm3%qLs?l80?7T3Qve%zxzpFq{Q%7rPt1;*M
zX87rxA$?;#&GTWUggjw~;hH4egc=HGKa);2iT&DTsWblxJypBA822Vmh<9MJIs8fy
zp-Ar8pqp3u^<m%Y`4^27h&r3B8Ip6Vdp?V##A#t4&xuR6kyDewA$#xY&BiV7wdRK`
z8-0@1v{h^!bA2dQ+|1!S(h`s;bHVF9Ya_qK`#F7i+i&ff4qu^77Zz(vg-uqGyPhfc
ztI`hu+@Kwz|Ffx$lx^+}pCO9(w;lu}DHwM7vC7lcG=ZWPNt-}I(R4d?C5@Ctq}a)X
z1x+_A*=#o%IIW=xdESmePqq8Zy)%7=g2r{iylO5fV|@!Qd6|{G+%z^!GMd`0N>4bT
z!maLrV9iAGi<!F|T;uy#n5V@`sb@;g!AZNXqyzWwO=D+0@WFH672dhKK8r6rJ-QO;
z>bDDT+-p|Z@3Ovos#>%hldGT9XORyFAafY*rMQ9&xtni_#hLmlx@zY~$tr-x@W}m^
zPoL{Clu~nO*dG&ot}L6Q``cLygQ~mppD~vVSfK6w%-!5j5a^ekXj9gpn+~wb0t761
zovVIX(+WoOEC2%$0r=sdfQykT9dX|%7RF4oB?f>)B%B^PZ-W8j;<@U>Y$CyQ%$D8U
zp>;tf0gjP8z+Voy|4BLLc#e)tbQGe~WX2w{bb8~#NPW)wAKqfDbbv^x1o+T9A%M0B
zHo!YVnfaH8A_xKZqLIJ{A`{RXahmy;i6R*O>IVggMk>+rGGmVeF_FsjfH6HV9eL*W
z9}*~zVFHw*6o30G9$Im_$NHBj#Zfr+fBY5g3z$S419qZNVCoqV@Lm}Wq0y4z88~`2
zU>A*I9Mk}a(ZVzZfxFRajM5i@b3_FDWpfS?%Qxmdw?jeI7^7+HGPFhkKcbodzZD4N
z66}a^al+7{20fKDC|zO{KqaEUc2*$3%0>|SOJ;(Q?BA_u$DqU}ZGWeR_!9yhU0mh-
z-TmoRrZ-JoX&urIine1B!Pi$0!QPI(ghM7|(jgQ5pakf$q!W(-FcK$<%l=<rSKt5F
z*<})n(b^seAz`32qUT@OX&Uj-%XE`a$1*(+OZfP?xOxX2Rxmo;TV|{p<CG_$5i1J)
sb>0Nppvy~+MTx+I57R<j1A{#Le1C6<)+~+Z?^`ty%L&1T(Jb+Q0k;bcbN~PV

diff --git a/dta/classes/database.php b/dta/classes/database.php
index a384b96..f93fd06 100644
--- a/dta/classes/database.php
+++ b/dta/classes/database.php
@@ -34,23 +34,58 @@ class DbUtils {
 
     private const TABLE_RECOMMENDATIONS = "assignsubmission_dta_recommendations";
 
-    /**
-     * Gets the recommendations for a given submission.
-     *
-     * @param int $submissionid ID of the submission
-     * @return array list of recommendations
-     */
-    public static function get_recommendations_from_database(int $assignmentid,int $submissionid ): array {
-        global $DB;
-
-        // Query the database to get all recommendations for the given submission id.
+    public static function get_recommendations_from_database(int $assignmentid, int $submissionid): array {
+        global $DB,$USER;
+        $userid = $USER->id;
+    
+        // Schritt 1: Alle Empfehlungen abrufen
         $records = $DB->get_records(self::TABLE_RECOMMENDATIONS, [
             'assignment_id' => $assignmentid,
             'submission_id' => $submissionid,
-    ]);
-
+        ]);
+    
+        // Schritt 2: Modul-ID für 'assign' abrufen
+        $module = $DB->get_record('modules', ['name' => 'assign'], 'id');
+        if (!$module) {
+            // Fehlerbehandlung, falls das Modul nicht gefunden wird
+            return $records;
+        }
+        $moduleid = $module->id;
+    
+        // Schritt 3: Überprüfe jeden Datensatz
+        foreach ($records as $key => $record) {
+            // Hol den Namen der Ãœbung aus dem Datensatz
+            $exercisename = $record->exercise_name;
+    
+            // Suche das Assignment mit diesem Namen
+            $assign = $DB->get_record('assign', ['name' => $exercisename], 'id');
+    
+            if ($assign) {
+                // Hole die Kursmodul-ID (coursemoduleid) für dieses Assignment
+                $cm = $DB->get_record('course_modules', [
+                    'module' => $moduleid,
+                    'instance' => $assign->id
+                ], 'id');
+    
+                if ($cm) {
+                    // Überprüfe den Abschlussstatus für dieses Kursmodul und den Benutzer
+                    $completion = $DB->get_record('course_modules_completion', [
+                        'coursemoduleid' => $cm->id,
+                        'userid' => $userid
+                    ], 'completionstate');
+    
+                    // Wenn der Abschlussstatus 1 ist, entferne den Datensatz aus $records
+                    if ($completion && $completion->completionstate == 1) {
+                        unset($records[$key]);
+                    }
+                }
+            }
+        }
+    
+        // Rückgabe der gefilterten Datensätze
         return $records;
     }
+    
 
     /**
      * gets summary with all corresponding result entries
-- 
GitLab